如何使一个ObservableCollection依赖于另一个ObservableCollection

本文关键字:ObservableCollection 依赖于 另一个 何使一 | 更新日期: 2023-09-27 18:03:11

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

如何使一个ObservableCollection依赖于另一个ObservableCollection

我希望我正确理解了你的问题:)

我认为你不需要第二/第三/…ObservableCollection。使用类型为System.Windows.Visibility的SpecialVisibility属性(名称由您决定)扩展视图模型。然后,将此属性绑定到数据模板的Visibility属性。

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

这些"特殊"元素(即不应该显示的元素)只需要将SpecialVisibility设置为system . windows . visibility . collapse。

当然,这并不能解决同步许多observablecollection的问题。然而,我认为这可能会解决你的问题。如果您不能使用CollectionChanged事件,您可能需要重新构建代码。

您可以创建一个继承具有原始集合引用的ObservableCollection<T>的新类。这个新类订阅了原来的CollectionChanged事件,并通过改变自身来响应它。