单个DataGrid行可见性

时间:2011-05-08 15:18:11

标签: wpf entity-framework

我有一个WPF DataGrid绑定到父EF对象内的Entity Framework个对象的集合。有点像:

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

现在,当我想“删除”订单时,我不想实际将其从数据源中删除,我只想将其IsDeleted属性设置为true,以便保留数据。

我的问题是:如果DataGrid属性为真,我怎样才能让IsDeleted跳过一行?我真的想使用绑定而不是代码隐藏。这样的事情会很精彩:

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

有点像DisplayMemberPath。我意识到我需要转换IsDeleted的状态,但这是一个不同的主题。

有什么想法吗?

3 个答案:

答案 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数据。