WPF:选中/取消选中gridview单元格模板中复选框的所有复选框?

时间:2008-11-28 18:24:38

标签: c# wpf data-binding gridview checkbox

我正在尝试为位于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永远不会更新。

有没有人对解决这个问题的最佳方法有任何建议?

1 个答案:

答案 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));
    }
}