我有一个绑定ObservableCollection
自我跟踪实体的DataGrid
用户可以“删除”DataGrid中的记录,但这些项目实际上并未从数据库中删除。
如何才能显示未标记为已删除的行?
我正在使用MVVM模式。
答案 0 :(得分:6)
使用CollectionView。过滤技术。它非常面向MVVM。
答案 1 :(得分:2)
只需添加DataGrid.RowStyle
,您就可以使用DataTriggers
将Visibility
设置为Collapsed
或更改Background
(code example)。
答案 2 :(得分:1)
也许这是你所追求的更多信息,但我遇到了完全相同的情况,并选择将行显示为灰色,或者当他们的状态切换为删除时“重新”显示。你触发属性和样式目标类型可能会有所不同,因为我使用的是Xceed DataGrid而你正在使用内置的Datagrid,但它基本上是相同的:https://stackoverflow.com/a/10431650/529618
<Style TargetType="{x:Type xcdg:DataRow}" >
<Style.Triggers>
<DataTrigger Binding="{Binding Path=ObjectState}"
Value="{x:Static Member=objectmodel:EnumObjectState.Deleted}" >
<!-- You can do anything in this trigger such as hide, collapse, or disable the row. I chose to apply a custom effect. -->
<Setter Property="Background" Value="#FFEED5D2"/>
<Setter Property="ToolTip" Value="This entry will be permanently deleted the next time you save."/>
<Setter Property="Effect">
<Setter.Value>
<ui:ColourAdjustEffect Saturation="0" Gamma="0.6" BrightnessAdjustment="-0.2" RedAdjustment="0.04" />
</Setter.Value>
</Setter>
</DataTrigger>
</Style.Triggers>
</Style>
对于它的外观,请查看下面合并图像中的最后3张图片: