我有一个包含一些元素的ObservableCollection。在这个集合的一些视图中绑定了一些元素。但是一个元素是特殊的,并且此元素不能在其他视图中显示。因为我想要其他收藏依赖于第一次收集。当然,我可以在我的ViewModel中为第一个和另外两个集合添加元素,但是第一个集合在很多地方都有变化。所以,从CollectionChanged事件我无法修改第二个集合。如何使一个ObservableCollection依赖于其他?
答案 0 :(得分:0)
我希望我能正确理解你的问题:)
我认为你不需要第二个/第三个/ ... ObservableCollection。使用System.Windows.Visibility类型的SpecialVisibility属性(名称由您决定)扩展视图模型。然后,将此属性绑定到数据模板的Visibility属性。
<ItemsControl.ItemTemplate>
<DataTemplate>
<YourControl Visibility="{Binding Path=SpecialVisibility}" />
</DataTemplate>
</ItemsControl.ItemTemplate>
这些“特殊”元素(即不应该显示的元素)只需要将SpecialVisibility设置为System.Windows.Visibility.Collapsed。
当然,这不是解决同步许多ObservableCollections问题的方法。但是,我认为这可能会解决您的问题。如果您不能使用CollectionChanged事件,则可能需要重新构建代码。
答案 1 :(得分:0)
您可以创建一个继承ObservableCollection<T>
的新类,该类具有对原始集合的引用。这个新类订阅原始的CollectionChanged
事件,并通过更改自身对其做出反应。