1

ObservableCollection自己追跡エンティティをバインドする DataGrid があります

ユーザーは DataGrid 内のレコードを「削除」できますが、項目は実際にはデータベースから削除されません。

削除済みとしてマークされていない行のみを表示するにはどうすればよいですか?

私はMVVMパターンを使用しています。

4

3 に答える 3

6

CollectionView .Filter テクニックを使用します。非常にMVVM指向です。

于 2012-05-07T15:31:26.193 に答える
2

を追加するだけで、を設定または変更するためにDataGrid.RowStyle使用できます(コード例)。DataTriggersVisibilityCollapsedBackground

于 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 に答える