Цвет фона выбранной строки в DataGrid по умолчанию настолько темный, что я не могу его прочитать. Есть ли способ отменить это?
Пробовал это
<dg:DataGrid.RowStyle>
<Style TargetType="{x:Type dg:DataGridRow}">
<Style.Triggers>
<Trigger Property="IsSelected" Value="True" >
<Setter Property="Background" Value="Gainsboro" />
</Trigger>
</Style.Triggers>
</Style>
</dg:DataGrid.RowStyle>
Но все равно ничего ...
Ответы:
В моем случае вышеупомянутое решение оставило синюю рамку вокруг каждой ячейки.
Это решение, которое сработало для меня. Это очень просто, просто добавьте это в свой
DataGrid
. Вы можете изменить его с ASolidColorBrush
на любую другую кисть, например линейный градиент.источник
<DataGrid>ItemsSource="{Binding Path=MySelector}" SelectedItem="{Binding SelectedItem, Mode=TwoWay}"
строка будет только LightGrey. Есть еще SystemColors? ´SystemColors.ControlBrushKey
.Понял. Добавьте в раздел DataGrid.Resources следующее:
источник
BorderBrush
остается синим, если это кого-то раздражает, просто добавьте еще одинSetter
элемент, который устанавливает дляBorderBrush
свойства зависимости тот же цвет (значение), что иBackground
сам.В дополнение к ответу @Seb Kade вы можете полностью контролировать цвета выбранных и невыделенных строк, используя следующее
Style
:Вы, конечно, можете указать любой цвет, который вам больше нравится. Это
Style
также будет работать и для других элементов коллекции , такие какListBoxItem
с (если заменитьTargetType="{x:Type DataGridRow}"
сTargetType="{x:Type ListBoxItem}"
, например).источник
Color
свойство третьегоSolidColorbrush
в моем примере на какой вам нравится цвет. Использование этого объявления фактически устанавливает цвет того,SolidColorbrush
чтоSystemColors.HighlightTextBrushKey
использует. Однако будьте осторожны, чтобы вы не установилиForeground
цвет в другомStyle
месте, так как это может переопределить настройки, указанныеResources
выше.SystemColors.InactiveSelectionHighlightBrushKey
, иначе строка будет выделяться, когда сетка теряет фокусУ меня была эта проблема, я чуть не вырвал себе волосы, и я не смог найти подходящий ответ в сети. Я пытался контролировать цвет фона выбранной строки в WPF DataGrid. Это просто не сработает. В моем случае причина заключалась в том, что у меня также был CellStyle в моей сетке данных, и CellStyle переопределял RowStyle, который я устанавливал. Это интересно, потому что CellStyle даже не устанавливал цвет фона, который вместо этого был задан свойствами RowBackground и AlternateRowBackground. Тем не менее, попытка установить цвет фона выбранной строки вообще не сработала, когда я сделал это:
и это сработало, когда я переместил желаемый стиль для выбранной строки из стиля строки в стиль ячейки, например:
Просто разместите это на случай, если у кого-то такая же проблема.
источник
Триггер IsSelected по умолчанию изменяет 3 свойства: Background, Foreground и BorderBrush. Если вы хотите изменить как границу, так и фон, просто включите это в свой триггер стиля.
источник
Некоторые из причин, по которым я столкнулся с тем, что событие выбора строки не работает
Вот что мне помогло. Установка стиля для DataGridCell
И поскольку я использовал столбец шаблона с меткой внутри, я привязал свойство Foreground к контейнеру Foreground с помощью привязки RelativeSource:
источник
Я пробовал ControlBrushKey, но для невыделенных строк это не сработало. Фон для невыделенной строки все еще оставался белым. Но мне удалось выяснить, что мне нужно переопределить стиль строки.
источник
Я потратил большую часть дня на решение этой проблемы. Оказалось, что свойство RowBackground в DataGrid, которое я установил, отменяет все попытки изменить его. Как только удалил, все заработало. (Кстати, то же самое касается переднего плана, установленного в DataGridTextColumn).
источник