#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>