1

我有一个绑定ObservableCollection自跟踪实体的 DataGrid

用户可以“删除” DataGrid 中的记录,但这些项目实际上并未从数据库中删除。

如何仅显示未标记为已删除的行?

我正在使用 MVVM 模式。

4

3 回答 3

6

使用CollectionView .Filter 技术。它非常面向 MVVM。

于 2012-05-07T15:31:26.193 回答
2

只需添加一个DataGrid.RowStyle,您可以用来DataTriggers设置或更改(代码示例)。VisibilityCollapsedBackground

于 2012-05-07T15:10:47.287 回答
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 张图像:

在此处输入图像描述

于 2012-05-07T15:42:41.320 回答