复选框绑定在 WPF 列表视图单元格模板中不起作用

本文关键字:不起作用 单元格 视图 绑定 WPF 列表 复选框 | 更新日期: 2023-09-27 18:37:20

我在UserControl1中有一个UserControl1和另一个UserControl2。在用户控件2中,我有一个列表视图。

我正在从数据库获取数据集,我想将"我的表"与列表视图绑定。所以我做了,如下所示隐藏的代码。

UserControl1.UserControl2.lstview.ItemsSource = DataSet.Tables["MyTable"].DefaultView;

上述方法有效。但问题是,在一列中有一个复选框作为单元格模板。

 <GridViewColumn.CellTemplate>
      <DataTemplate>
        <CheckBox IsChecked="{Binding isok, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Width="20" Height="15" />
      </DataTemplate>
 </GridViewColumn.CellTemplate>

[isok 是 MyTable 中的位类型列]

但是当我通过代码更新 isok 列时,它没有反映在 UI 中。 即,复选框未选中或未选中。

所以也许这可能是没有将绑定模式设置为 2 方式的问题。所以我做了,如下所示。但是当我这样做时,列表视图中没有显示任何数据,如下所示!!

这里可能有什么问题???

Binding b = new Binding("DataSet.Tables");
b.Source = DataSet.Tables["MyTable"].DefaultView;
b.Mode = BindingMode.TwoWay;
UserControl1.UserControl2.lstview.SetBinding(ListView.ItemsSourceProperty, b);

我正在更新列值,如下所示

  DataView dv = (DataView)lstview.ItemsSource;
 foreach (DataRow dr in dv.Rows)
        {
            dr["isok"] = isselected;
        } 

注意:这里没有MVVM

复选框绑定在 WPF 列表视图单元格模板中不起作用

DataRow 不实现 INotifyPropertyChanged,因此当您更改属性时,UI 不会收到通知。

用户数据行视图改为:

http://msdn.microsoft.com/en-us/library/system.data.datarowview%28v=vs.100%29.aspx

编辑:

foreach (DataRowView tempRowView in myDataTable.DefaultView)
{
  ...
}

myDataTable.DefaultView 中的项可以直接强制转换为 DataRowView。