WPF: Софт удаляет и привязывает? - PullRequest
0 голосов
/ 26 марта 2010

У меня есть пользовательские объекты, которые реализуют INotifyProperyChanged, и теперь я задаюсь вопросом, можно ли реализовать мягкое удаление, которое бы хорошо сочеталось с привязкой? Каждый объект будет иметь свойство IsDeleted, и если для этого свойства установлено значение true, оно не будет отображаться в графическом интерфейсе. Я думал о создании собственного расширения разметки, которое будет украшать класс Binding, но оно не сработало, как ожидалось. Сейчас я рассматриваю использование MultiBinding с IsDeleted в качестве одного из связанных свойств, чтобы конвертер мог выяснить, какой объект удален. Но это решение звучит довольно сложно и скучно.

У кого-нибудь есть идеи, как реализовать мягкое удаление для связывания?

Ответы [ 2 ]

2 голосов
/ 26 марта 2010

Вы можете привязать видимость свойства UIElement к свойству IsDeleted вашего объекта, чтобы скрыть или показать элементы.

В качестве примера я использую TextBlock. В XAML вы можете написать

<TextBlock Text="IsDeleted" Visibility={Binding IsDeleted}/>

ПРИМЕЧАНИЕ. В приведенном выше примере TextBlock отображается, когда IsDeleted имеет значение true. Я бы определил положительное свойство, например, Exists для объекта. Таким образом, вам не нужно отрицать логическое значение или создавать собственный конвертер.

WPF имеет встроенный конвертер, который преобразует логическое значение в перечисляемое значение Visibility.

1 голос
/ 27 марта 2010

Другим способом реализации мягкого удаления является поддержание и предоставление коллекции, содержащей только те элементы, которые не были удалены в модели представления, в дополнение к коллекции всех элементов. Это (на мой взгляд) очень большая заслуга в том, что это не то, о чем ваш взгляд вообще должен думать.

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