设置背景工作正常DataGridCheckBoxColumn
而不是DataGridTextColumn
。 我将它设置为资源池:
<Style TargetType="{x:Type DataGridCell}">
<Style.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter Property="Background" Value="#ffff00" />
</Trigger>
<Trigger Property="IsEditing" Value="True">
<Setter Property="BorderThickness" Value="1" />
<Setter Property="BorderBrush" Value="#00ff00" />
<Setter Property="Background" Value="#00ff00" />
</Trigger>
</Style.Triggers>
</Style>
是否有此问题的任何解决方案?
您应该添加magic
字符串:
<SolidColorBrush x:Key="{x:Static SystemColors.WindowBrushKey}" Color="Transparent" />
在你的资源,例如<Window.Resources>
在这种情况下,当IsEditing="True"
颜色由缺省值(分配White
),其从所拍摄的SystemColors
。 不过,你需要明确设置颜色的主面板或Window
。
或者设置该字符串<DataGrid.Resources>
与Background="White"
:
<DataGrid Background="White" ...>
<DataGrid.Resources>
<SolidColorBrush x:Key="{x:Static SystemColors.WindowBrushKey}" Color="Transparent" />
</DataGrid.Resources>
...
</DataGrid>
接受的答案是伟大的,直到它会导致副作用。 对我来说,这是造成编辑时,可能是因为设置了“魔”系统颜色与搞乱编辑插入符号是不可见的,可以自动设置插入颜色逻辑 。
更好的解决方案是简单地覆盖,网格使用时,它在编辑模式(风格DataGridTextColumn.EditingElementStyle
),就像这样:
<DataGrid>
<DataGrid.Columns>
<DataGridTextColumn>
<DataGridTextColumn.EditingElementStyle>
<Style TargetType="TextBox">
<Setter Property="Background" Value="#00ff00"/>
</Style>
</DataGridTextColumn.EditingElementStyle>
</DataGridTextColumn>
</DataGrid.Columns>
</DataGrid>
然而,另一种解决方案是使自己的DataGridTemplateColumn
,如图所示这里 。 这使您对您的列的完全控制,而不是针对任何战斗内置的DataGridTextColumn
想做的事。 然而,这可能是太多的权力,因为它可能会迫使你处理,你可能不想细节。 但FWIW,这是什么在我的案件的工作。