Индивидуальная видимость строки DataGrid - PullRequest
7 голосов

У меня есть WPF DataGrid, связанный с коллекцией Entity Framework объектов, которые находятся внутри родительского объекта EF.Что-то вроде:

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

Теперь, когда я хочу «удалить» ордер, я не хочу фактически удалять его из источника данных, я просто хочу установить его свойство IsDeletedЗначение true, поэтому данные сохраняются.

Мой вопрос: как я могу заставить мой DataGrid пропустить строку, если свойство IsDeleted имеет значение true?Я действительно хотел бы использовать привязку, а не код позади.Примерно так было бы замечательно:

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

Вроде как DisplayMemberPath.Я понимаю, что мне нужно будет преобразовать состояние IsDeleted, но это уже другая тема.

Есть идеи?

Ответы [ 3 ]

23 голосов
/ 08 мая 2011

Помимо использования 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>
6 голосов
/ 25 сентября 2012
<DataGrid.RowStyle>
    <Style TargetType="{x:Type DataGridRow}">
       <Setter Property="Visibility" Value="{Binding IsDeleted, Converter={StaticResource BoolToVisibility}}"/>                                     
    </Style>
</DataGrid.RowStyle>
2 голосов
/ 08 мая 2011

Вы можете использовать CollectionView до фильтр ваши данные.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...