WPF: Софт удаляет и привязывает?

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

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

2 ответа

Решение

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

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

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

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

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

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

Другие вопросы по тегам