我正在尝试为位于CheckBox
的单元格模板内的多个CheckBoxes
创建一个检查/取消选中所有GridViewColumn
。我将此列添加到GridView
(以及其他列),将GridView
设置为ListView
的view属性,然后将ListView
数据绑定到自定义DataObjects
。因此,ListView
的每一行都有一个包含复选框的列以及绑定到绑定对象的属性路径的列。
我想通过绑定CheckBox
的{{1}}属性来创建检查/取消选中所有IsChecked
,但我不想更改数据对象{{1} } 一定会。我的第一次尝试是将ListView绑定到CheckBoxes
,然后将ListView
属性绑定到Dictionary<DataObject,Boolean>
的{{1}},将其他列绑定到IsChecked
。 Value
的。然后,我只需切换字典的Dictionary
,然后选中/取消选中所有Key
被点击。绑定工作正常,但显然字典不支持更改通知,因此DataObjectProperty
永远不会更新。
有没有人对解决这个问题的最佳方法有任何建议?
答案 0 :(得分:2)
我能想到的唯一方法是将DataObject和boolean包装在一个实现INotofyPropertyChanged的新类中。说新类是YourCollection。将ObservableCollection< YourNewClass >
实例绑定到ListView
public class YourNewClass :INotifyPropertyChanged
{
public YourDataObject Object { get; set; }
private bool _isChecked;
public bool IsChecked
{
get
{
return _isChecked;
}
set
{
_isChecked = value;
OnPropertyChanged("IsChecked");
}
}
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void OnPropertyChanged(string propertyName)
{
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}