首页 > 解决方案 > 选择并聚焦时如何更改数据网格单元格背景颜色?

问题描述

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 的完整代码在这里。

标签: c#wpfdatagrid

解决方案


您必须为您的数据网格列创建和设置一个,因为当您双击一个单元格时您EditingElementStyle处于编辑模式。在该模式下,数据网格单元格包含用于编辑的特定控件,例如TextBox用于文本列的 a,因此更改单元格背景不会产生效果。

下面的编辑风格设置了编辑模式中的Background和。ForegroundTextBox

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

推荐阅读