单个DataGrid行可见性

问题描述:

我有一个WPF DataGrid绑定到一个父EF对象内部的Entity Framework对象的集合。沿着线的东西:单个DataGrid行可见性

<DataGrid ItemsSource="{Binding SelectedCustomer.Orders}" /> 

现在,当我想“删除”的命令,我不希望真正从数据源中删除它,我只是希望它的IsDeleted属性设置为true,以便数据被保留。

我的问题是:如果IsDeleted属性为真,我怎么才能让我的DataGrid跳过一行?我真的想使用绑定而不是代码隐藏。像这样的东西将是美好的:

<DataGrid ItemsSource="{Binding SelectedCustomer.Orders}" RowVisibilityPath="IsDeleted" /> 

种类沿线DisplayMemberPath。我意识到我需要转换IsDeleted的状态,但这是一个不同的话题。

任何想法?

+0

只是包装的收集和包装中取出。其他一切都太复杂了。不应该是一个适当的视图模型的问题。 – Falcon 2011-05-08 15:23:30

您可以使用CollectionViewfilter您的数据。

+0

你能举一些例子吗? – 2014-04-21 13:07:01

+1

@ClarkKent:我认为[此博客文章](http://www.abhisheksur.com/2010/08/woring-with-icollectionviewsource-in.html)是一个很好的教程,也有可下载的源文件。 – Ben 2014-04-25 07:29:26

+0

谢谢你的回答! – 2014-04-25 12:03:37

除了使用的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> 
+0

好的,谢谢! – 2014-04-21 13:11:00

<DataGrid.RowStyle> 
    <Style TargetType="{x:Type DataGridRow}"> 
     <Setter Property="Visibility" Value="{Binding IsDeleted, Converter={StaticResource BoolToVisibility}}"/>          
    </Style> 
</DataGrid.RowStyle>