Как сделать одну ObservableCollection зависимой от другой - PullRequest
1 голос
/ 24 июля 2011

У меня есть ObservableCollection, которая содержит некоторые элементы. В некоторых представлениях к этой коллекции привязаны некоторые элементы. Но один элемент является особенным, и этот элемент не должен отображаться в других представлениях. Потому что я хочу, чтобы другая коллекция зависела от первой коллекции. Конечно, я могу добавить элементы в первую и две другие коллекции в моей ViewModel, но первая коллекция изменилась во многих местах. Итак, из события CollectionChanged я не могу изменить вторую коллекцию. Как я могу сделать одну ObservableCollection зависимой от другой?

Ответы [ 2 ]

0 голосов
/ 24 июля 2011

Вы можете создать новый класс, который наследует ObservableCollection<T>, который имеет ссылку на исходную коллекцию.Этот новый класс подписывается на событие CollectionChanged оригинала и реагирует на него, изменяя себя.

0 голосов
/ 24 июля 2011

Надеюсь, я правильно понял вашу проблему:)

Не думаю, что вам нужна вторая / третья / ... ObservableCollection.Расширьте модель представления свойством SpecialVisibility (имя зависит от вас) типа System.Windows.Visibility.Затем привяжите это свойство к свойству Visibility вашего шаблона данных.

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

Этим «особым» элементам (т. Е. Элементам, которые не следует отображать) просто нужно, чтобы для SpecialVisibility было установлено значение System.Windows.Visibility.Свернуто.

Конечно, это не решение вашей проблемы синхронизации многих ObservableCollections.Тем не менее, я думаю, что это может решить вашу проблему.Если вы не можете использовать событие CollectionChanged, возможно, вы захотите реструктурировать свой код.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...