10 votes

Visibilité individuelle des lignes de la grille de données

J'ai un logiciel WPF DataGrid lié à une collection de Entity Framework à l'intérieur d'un objet EF parent. Quelque chose comme :

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

Maintenant, lorsque je veux "supprimer" un ordre, je ne veux pas réellement le supprimer de la source de données, je veux simplement définir son IsDeleted à true pour que les données soient conservées.

Ma question est la suivante : comment puis-je obtenir mon DataGrid pour sauter une ligne si elle est IsDeleted est vrai ? J'aimerais vraiment utiliser le binding et non le codebehind. Quelque chose comme cela serait merveilleux :

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

Un peu comme dans l'exemple suivant DisplayMemberPath . Je me rends compte qu'il me faudrait convertir l'état de IsDeleted mais c'est un autre sujet.

Des idées ?

27voto

H.B. Points 76352

Outre l'utilisation d'un CollectionView comme mentionné, vous pouvez le faire via le 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>

9voto

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

2voto

Ben Points 771

Vous pouvez utiliser un CollectionView a filtre vos données.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X