我有实现INotifyProperyChanged的自定义对象,现在我想知道是否可以实现软删除,它可以很好地与绑定一起使用?每个对象都有一个IsDeleted属性,如果此属性设置为true,则不会在GUI中显示。我正在考虑制作一个自定义标记扩展来装饰Binding类,但它没有像预期的那样解决。现在我正在考虑将MultiBinding与IsDeleted一起用作绑定属性之一,以便转换器能够找出哪个对象被删除。但是这个解决方案听起来很复杂而且很无聊。
有人知道如何实现软删除绑定吗?
答案 0 :(得分:2)
您可以将UIElement的Property Visibility绑定到对象的属性IsDeleted,以隐藏或显示元素。
作为一个例子,我使用TextBlock。在XAML中,您可以编写
<TextBlock Text="IsDeleted" Visibility={Binding IsDeleted}/>
注意:在上面的示例中,当IsDeleted为true时,TextBlock可见。我会定义一个正属性,例如对象上的Exists。因此,您不必否定布尔值或构建自己的转换器。
WPF有一个buildin转换器,它将boolean转换为可见性的枚举值。
答案 1 :(得分:1)
实现软删除的另一种方法是维护和公开一个集合,该集合仅包含视图模型中尚未删除的项目以及所有项目的集合。这有(在我看来)非常好的优点,这不是你的观点需要考虑的事情。