簡體   English   中英

復選框綁定在WPF ListView單元格模板中不起作用

[英]Checkbox binding in not working in WPF ListView Cell Template

我在UserControl1中有一個UserControl1和另一個UserControl2。 在用戶Control2中,我有一個列表視圖。

我從數據庫獲取數據集,並且想將“ MyTable”與listview綁定。 所以我做了如下所示的代碼。

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

DataRow沒有實現INotifyPropertyChanged,因此,當您更改屬性時,UI不會收到通知。

用戶DataRowView代替:

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

編輯:

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

myDataTable.DefaultView中的項目可以直接轉換為DataRowView。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM