Ниже приведен пример того, как установить фон при выборе ячейки, но когда я действительно нажимаю внутри ячейки, чтобы изменить его, цвет меняется. Существует ли свойство триггера, когда редактируется ячейка? Я бы хотел, чтобы фон не менялся.Как изменить фон ячейки WPG DataGrid при редактировании ячейки?
<DataGrid Name="DG1" ItemsSource="{Binding}" SelectionUnit="Cell" >
<DataGrid.CellStyle>
<Style TargetType="DataGridCell" >
<Style.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter Property="Background" Value="SeaGreen"/>
</Trigger>
</Style.Triggers>
</Style>
</DataGrid.CellStyle>
</DataGrid>
Отвечая на мой собственный вопрос, это выглядит как цвет фона ячейки базируется на SystemColors.WindowBrushKey
. Переопределение этого ресурса, такого как <SolidColorBrush x:Key="{x:Static SystemColors.WindowBrushKey}" Color="Red" />
, сделало трюк. `
Это было отличное решение. –
Хорошее решение, одна проблема: текстовое поле автоматически не фокусируется. Чтобы автоматически сфокусироваться на текстовом поле, добавьте следующий атрибут в объявление текстового поля: FocusManager.FocusedElement = "{Binding RelativeSource = {RelativeSource Self}}" – Mark
Работает нормально, но только если все столбцы имеют тип DataGridTextColumn. Если есть столбец другого типа, скажем DataGrigTemplateColumn с CheckBox, то после нажатия на ячейку он становится TextBox вместо CheckBox. Любое предложение о том, как различать тип столбца в триггере? – dedpichto