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 つの画像をチェックしてください。