Вопрос

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

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

Это было полезно?

Решение

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

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

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

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

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

Другие советы

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top