3

のセルテンプレート内にあるCheckBoxいくつかのチェック/チェック解除を作成しようとしています。この列を(他の列とともに)に追加し、をのviewプロパティに設定してから、カスタムのコレクションにデータバインドしました。したがって、の各行には、チェックボックスを含む列と、バインドされたオブジェクトのプロパティパスにバインドされた列があります。CheckBoxesGridViewColumnGridViewGridViewListViewListViewDataObjectsListView

のプロパティをCheckBoxバインドしてすべてのチェック/チェック解除を作成したいのですが、バインドされているデータオブジェクトを変更したくありません。私の最初の試みは、ListViewをにバインドしてから、プロパティをのにバインドし、他の列をにバインドすることでした。。次に、[すべてチェック/チェック解除]をクリックしたときに、辞書のを切り替えました。のバインディングは正しく機能しましたが、辞書は変更通知をサポートしていないため、更新されませんでした。IsCheckedCheckBoxesListViewDictionary<DataObject,Boolean>IsCheckedValueDictionaryKeyDataObjectPropertyValuesCheckBoxCheckBoxes

この問題を解決するための最良の方法について誰かが何か提案がありますか?

4

1 に答える 1

2

私が考えることができる唯一の方法は、INotofyPropertyChangedを実装する新しいクラス内にDataObjectとブール値をラップすることです。新しいクラスは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 に答える