1

ObservableCollection の所有者内で、ObservableCollection 内の項目の PropertyChanged イベントを処理する必要があります。以下よりもエレガントな方法が必要です。

ObservableCollection(MyViewModel) myViewModels = new ObservableCollection<MyViewModel>();
LoadMyViewModels(myViewModels); // populates the collection
foreach (MyViewModel myViewModel in myViewModels)
{
    myViewModel.PropertyChanged += PropertyChangedEventHandler(MyViewModelPropertyChanged);
}

MyViewModelPropertyChanged イベント ハンドラーを LoadMyViewModels に渡したいので、コレクションを 2 回 (読み込み時とイベント割り当て時に 1 回) トラバースする必要はありません。

MyViewModelPropertyChanged は、UI に反映される含まれているビューのプロパティを設定します (コレクションは TreeView にバインドされており、アイテムがチェックされているかどうかに基づいて UI のフィールドを有効/無効にする必要があります)。

引用された投稿のすべてではないにしても、ほとんど見てきましたが、少し迷っています。

上記のコードは必要なことを実行しますが、もっと良い方法があることはわかっています。適切なリファレンスまたはコード サンプルを引用してください。

ありがとう。

4

1 に答える 1

0

ABindingListはあなたが必要とするものをあなたに与えるかもしれません...

BindingListは、アイテムが を実装するときにアイテム変更通知を中継しますINotifyPropertyChanged

于 2013-01-22T06:06:13.863 に答える