【问题标题】:How to make one ObservableCollection dependent on other如何使一个 ObservableCollection 依赖于另一个
【发布时间】:2011-07-24 13:40:04
【问题描述】:

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

【问题讨论】:

    标签: c# silverlight mvvm


    【解决方案1】:

    希望我能正确理解您的问题:)

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

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

    这些“特殊”元素(即不应显示的元素)只需要将 SpecialVisibility 设置为 System.Windows.Visibility.Collapsed。

    当然,这不是解决同步许多 ObservableCollections 问题的方法。但是,我认为这可能会解决您的问题。如果您不能选择使用 CollectionChanged 事件,您可能需要重构代码。

    【讨论】:

      【解决方案2】:

      您可以创建一个继承 ObservableCollection&lt;T&gt; 的新类,该类具有对原始集合的引用。这个新类订阅了原始类的CollectionChanged 事件,并通过更改自身对其做出反应。

      【讨论】:

        猜你喜欢
        • 2011-01-31
        • 2015-08-02
        • 2018-01-05
        • 2018-06-01
        • 2022-10-18
        • 1970-01-01
        • 1970-01-01
        • 2014-12-08
        • 2013-08-11
        相关资源
        最近更新 更多