2011-05-08 66 views
6

我有一個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

回答

2

您可以使用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

21

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

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