我有一个WPF DataGrid
绑定到父EF对象内的Entity Framework
个对象的集合。有点像:
<DataGrid ItemsSource="{Binding SelectedCustomer.Orders}" />
现在,当我想“删除”订单时,我不想实际将其从数据源中删除,我只想将其IsDeleted
属性设置为true,以便保留数据。
我的问题是:如果DataGrid
属性为真,我怎样才能让IsDeleted
跳过一行?我真的想使用绑定而不是代码隐藏。这样的事情会很精彩:
<DataGrid ItemsSource="{Binding SelectedCustomer.Orders}" RowVisibilityPath="IsDeleted" />
有点像DisplayMemberPath
。我意识到我需要转换IsDeleted
的状态,但这是一个不同的主题。
有什么想法吗?
答案 0 :(得分:22)
除了使用上面提到的CollectionView之外,您还可以通过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>
答案 1 :(得分:6)
<DataGrid.RowStyle>
<Style TargetType="{x:Type DataGridRow}">
<Setter Property="Visibility" Value="{Binding IsDeleted, Converter={StaticResource BoolToVisibility}}"/>
</Style>
</DataGrid.RowStyle>
答案 2 :(得分:2)
您可以使用CollectionView filter数据。