3

我正在尝试创建一个选中/取消选中所有CheckBox位于. 我将此列添加到 a (连同其他列),将 设置为 a 的 view 属性,然后将数据绑定到 custom 的集合。因此,每一行都有一个包含复选框的列以及绑定到绑定对象的属性路径的列。CheckBoxesGridViewColumnGridViewGridViewListViewListViewDataObjectsListView

我想CheckBox通过绑定 的IsChecked属性来创建全部选中/取消选中CheckBoxes,但我不想更改ListView绑定到的数据对象。我的第一次尝试是将 ListView 绑定到 aDictionary<DataObject,Boolean>然后将IsChecked属性绑定到ValuetheDictionary和其他列到Key. DataObjectProperty. 然后,我只是在单击选中/取消选中所有时切换了Values字典CheckBox。绑定工作正常,但显然字典不支持更改通知,因此CheckBoxes从未更新。

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

4

1 回答 1

2

我能想到的唯一方法是将您的 DataObject 和布尔值包装在一个实现 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));
    }
}
于 2008-11-28T18:42:40.087 回答