c# - 选择并聚焦时如何更改数据网格单元格背景颜色?
问题描述
Background
当我双击它时,我试图更改当前选定单元格的属性,但由于我是 WPF 新手,我遇到了一些问题。我用 XAML 尝试过这种方式:
<DataGrid.CellStyle>
<Style TargetType="DataGridCell">
<Style.Triggers>
<Trigger Property="IsFocused" Value="True">
<Setter Property="Background" Value="#FF333333"/>
</Trigger>
</Style.Triggers>
</Style>
</DataGrid.CellStyle>
并以编程方式:
private void DataMapping_MouseDoubleClick(object sender, MouseButtonEventArgs e)
{
var row = sender as DataGridRow;
row.Background = new SolidColorBrush(Color.FromRgb(51, 51, 51));
}
有什么建议么?Datagrid 的完整代码在这里。
解决方案
您必须为您的数据网格列创建和设置一个,因为当您双击一个单元格时您EditingElementStyle
处于编辑模式。在该模式下,数据网格单元格包含用于编辑的特定控件,例如TextBox
用于文本列的 a,因此更改单元格背景不会产生效果。
下面的编辑风格设置了编辑模式中的Background
和。Foreground
TextBox
<DataGrid AutoGenerateColumns="False" ItemsSource="{Binding DataGridRows}" ...>
<DataGrid.Resources>
<!-- ...other data grid resources. -->
<Style x:Key="DataGridTextColumnEditingStyle"
TargetType="{x:Type TextBox}"
BasedOn="{StaticResource {x:Type TextBox}}">
<Setter Property="Background" Value="#FF333333"/>
<Setter Property="Foreground" Value="White"/>
</Style>
</DataGrid.Resources>
<!-- ...other data grid code. -->
<DataGrid.Columns>
<!-- ...other data grid columns -->
<DataGridTextColumn Header="CSV Column"
IsReadOnly="False"
Binding="{Binding Path=CSVColumnValue}"
Width="*"
Foreground="White"
EditingElementStyle="{StaticResource DataGridTextColumnEditingStyle}"/>
</DataGrid.Columns>
</DataGrid>
推荐阅读
- excel - 在保留日期格式的同时将日期从 CSV 复制到 Excel
- git - 如何在 git pull 上过滤大文件?
- uinavigationcontroller - 从另一个视图调用导航视图 Swift 5
- android - Activity 在 Android 中启动时为视图设置动画
- python - 调用多个函数时出现递归错误
- c# - Discord.net 无法启动 RequestOptions
- javascript - Firebase 错误:第一个参数的密钥路径长于 768 字节
- python - 谷歌 FooBar 带枪参加警卫战
- if-statement - aarch64 有条件地加载/存储的方式是什么?
- python - 如何散点图2具有拥有颜色的数组列表?