WPF: эквивалент ListViewItem для DataGrid

#wpf #listview #datagrid #row

#wpf #listview #datagrid #строка

Вопрос:

У меня есть некоторый код, который делает

 <Style TargetType="ListViewItem">
    <Setter Property="XX" Value="true" />
</Style>
  

Это работает, как и ожидалось, для ListViews. Однако я хочу заменить ListView на DataGrid, и у меня возникли проблемы с поиском эквивалента ListViewItem для Datagrid. Сначала я думал, что элементы Datagrid будут наследоваться от ListView, так что ничего не нужно было менять, но установщик не имел никакого эффекта. Затем я изменил его на:

 <Style TargetType="DataGridRow">
    <Setter Property="XX" Value="true" />
</Style>
  

Но это также не имело никакого эффекта. И DataGridItem или DataGridViewItem не существует, поэтому у меня заканчиваются опции. Итак, какой тип цели мне нужен?

Комментарии:

1. Что именно вы хотите изменить в стиле? Как отображается строка или что-то еще?

2. Нет, я слежу за изменениями этого свойства, чтобы я мог автоматически загружать его данные в фоновом режиме с помощью виртуализации данных.

3. @Joshua DataGrid по умолчанию виртуализированы в пользовательском интерфейсе, что означает, что DataGridRows повторно используются, а не создаются заново. Возможно, вам следует показать более конкретный пример кода того, что вы пытаетесь сделать.

4. @Rachel Используй это ( devzest.com/blog/post/WPF-Data-Virtualization.aspx ) код для Datagrid. Все работает, когда я звоню. Загружается из события _LoadingRow вручную. Но я пытаюсь имитировать поведение примера, показанного там.

Ответ №1:

Вы можете установить общие стили на DataGridRow , DataGridColumn или DataGridCell . Какой из них вы используете, зависит от того, какой параметр вы устанавливаете.

 <DataGrid>
    <DataGrid.Resources>
        <Style TargetType="{x:Type DataGridCell}">
            <Setter Property="IsReadOnly" Value="True" />
        </Style>
        <Style TargetType="{x:Type DataGridRow}">
            <Setter Property="Background" Value="Green" />
        </Style>
    </DataGrid.Resources>

</DataGrid>