2010-03-26 5 views
0

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

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

ответ

2

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

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

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

Примечание: В приведенном выше примере, TextBlock видна, когда IsDeleted верно. Я бы определил положительное свойство, такое как Exists на объекте. Таким образом, вам не нужно отменять логическое значение или создавать собственный конвертер.

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

+0

Я сделал что-то похожее на то, что вы предложили. У меня есть два свойства в базовом типе, т. Е. IsDeleted и Visiblity, который возвращает Visiblity.Collapsed, если IsDeleted == true. – aks

1

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

+0

Хотя это решение идеально подходит, если вы используете MVVM или что-то подобное, которое я для этого проекта, у меня возникла бы проблема перезаписи важной части приложения на данный момент. – aks

Смежные вопросы