I have a WPF DataGrid
bound to a collection of Entity Framework
objects that's inside a parent EF object. Something along the lines of:
<DataGrid ItemsSource="{Binding SelectedCustomer.Orders}" />
Now when I want to "delete" an Order, I don't want to actually delete it from the data source, I simply want to set its IsDeleted
property to true so the data is retained.
My question is: how can I get my DataGrid
to skip a row if it's IsDeleted
property is true? I would really like to use binding and not codebehind. Something like this would be wonderful:
<DataGrid ItemsSource="{Binding SelectedCustomer.Orders}" RowVisibilityPath="IsDeleted" />
Kind of along the lines of DisplayMemberPath
. I realize I would need to convert the state of IsDeleted
, but that's a different topic.
Any ideas?
Aside from using a CollectionView as mentioned you can do this via the RowStyle:
<DataGrid.RowStyle>
<Style TargetType="{x:Type DataGridRow}">
<Style.Triggers>
<DataTrigger Binding="{Binding IsDeleted}" Value="True">
<Setter Property="Visibility" Value="Collapsed"/>
</DataTrigger>
</Style.Triggers>
</Style>
</DataGrid.RowStyle>
<DataGrid.RowStyle>
<Style TargetType="{x:Type DataGridRow}">
<Setter Property="Visibility" Value="{Binding IsDeleted, Converter={StaticResource BoolToVisibility}}"/>
</Style>
</DataGrid.RowStyle>
You can use a CollectionView to filter your data.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With