我有一个绑定ObservableCollection
自跟踪实体的 DataGrid
用户可以“删除” DataGrid 中的记录,但这些项目实际上并未从数据库中删除。
如何仅显示未标记为已删除的行?
我正在使用 MVVM 模式。
使用CollectionView .Filter 技术。它非常面向 MVVM。
只需添加一个DataGrid.RowStyle
,您可以用来DataTriggers
设置或更改(代码示例)。Visibility
Collapsed
Background
也许它比你想要的信息多一点,但我遇到了完全相同的情况,并选择将行显示为灰色,或者当它们的状态切换为已删除时显示为“红色”。由于我使用的是 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 张图像: