如何使一个ObservableCollection依赖于其他

时间:2011-07-24 13:40:05

标签: c# silverlight mvvm

我有一个包含一些元素的ObservableCollection。在这个集合的一些视图中绑定了一些元素。但是一个元素是特殊的,并且此元素不能在其他视图中显示。因为我想要其他收藏依赖于第一次收集。当然,我可以在我的ViewModel中为第一个和另外两个集合添加元素,但是第一个集合在很多地方都有变化。所以,从CollectionChanged事件我无法修改第二个集合。如何使一个ObservableCollection依赖于其他?

2 个答案:

答案 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事件,并通过更改自身对其做出反应。