2011-07-24 7 views
1

ObservableCollectionにはいくつかの要素が含まれています。このコレクションの一部のビューではい​​くつかの要素がバインドされています。しかし、1つの要素は特別であり、この要素は他のビューに表示してはいけません。私は他のコレクションを最初のコレクションに依存させたいからです。もちろん、私はViewModelの最初と2つのコレクションに要素を追加できますが、最初のコレクションは多くの場所で変更されました。だから、CollectionChangedイベントから、私は2番目のコレクションを変更することはできません。どのObservableCollectionを他のObservableCollectionに依存させることができますか?ObservableCollectionを他に依存させる方法

答えて

0

私は私が正しくあなたの問題を理解願っています:)

私はあなたが二/三/ ...のObservableCollectionを必要としないと思います。 System.Windows.Visibility型のSpecialVisibilityプロパティ(名前はあなた次第です)でビューモデルを拡張します。次に、このプロパティをデータテンプレートのVisibilityプロパティにバインドします。

<ItemsControl.ItemTemplate> 
    <DataTemplate> 
     <YourControl Visibility="{Binding Path=SpecialVisibility}" /> 
    </DataTemplate> 
</ItemsControl.ItemTemplate> 

これらの「特別」の要素(すなわちdispayedされるべきではない要素)だけSystem.Windows.Visibility.Collapsedに設定SpecialVisibilityを必要とします。

もちろん、これは多くのObservableCollectionsを同期させる問題に対する解決策ではありません。しかし、これはあなたの問題を解決するかもしれないと思う。 CollectionChangedイベントを使用するオプションがない場合は、コードの再構成が必要な場合があります。

0

元のコレクションへの参照を持つObservableCollection<T>を継承する新しいクラスを作成できます。この新しいクラスは、オリジナルのCollectionChangedイベントにサブスクライブし、それ自体を変更することによってそれに反応します。