WPF: Софт удаляет и привязывает?
У меня есть пользовательские объекты, которые реализуют INotifyProperyChanged, и теперь я задаюсь вопросом, можно ли реализовать мягкое удаление, которое бы хорошо сочеталось с привязкой? Каждый объект будет иметь свойство IsDeleted, и если для этого свойства установлено значение true, оно не будет отображаться в графическом интерфейсе. Я думал о создании собственного расширения разметки, которое будет украшать класс Binding, но оно не сработало, как ожидалось. Теперь я рассматриваю возможность использования MultiBinding с IsDeleted в качестве одного из связанных свойств, чтобы конвертер мог выяснить, какой объект удален. Но это решение звучит довольно сложно и скучно.
У кого-нибудь есть идея, как реализовать мягкое удаление для связывания?
2 ответа
Вы можете привязать видимость свойства UIElement к свойству IsDeleted вашего объекта, чтобы скрыть или показать элементы.
В качестве примера я использую TextBlock. В XAML вы можете написать
<TextBlock Text="IsDeleted" Visibility={Binding IsDeleted}/>
ПРИМЕЧАНИЕ. В приведенном выше примере TextBlock отображается, когда IsDeleted имеет значение true. Я бы определил положительное свойство, например, Exists для объекта. Таким образом, вам не нужно отрицать логическое значение или создавать собственный конвертер.
WPF имеет встроенный конвертер, который преобразует логическое значение в перечисляемое значение Visibility.
Другим способом реализации мягкого удаления является поддержание и отображение коллекции, содержащей только те элементы, которые не были удалены в модели представления, в дополнение к коллекции всех элементов. Это (на мой взгляд) очень большая заслуга в том, что это не то, о чем ваш взгляд вообще должен думать.