根据数据表更改数据网格的单元格颜色

时间:2018-08-01 11:06:55

标签: c# wpf datagrid wpfdatagrid

我有一个数据表,我想根据数据表的值更改数据网格中单元格的颜色。

例如,在某些单元格中,字段被写入:无效,忙碌。无效时,我想用红色留下您的背景,而我想离开多少忙于绿色

数据表

     0     1     3     4
0 invalid

1              invalid

2

3 invalid

4                     invalid

所以在我的数据网格坐标(0,0),(3,0),(3,1)和(4,4)中,我想绘制红色背景

这怎么可能? 我尝试通过以下方式进行操作

<DataGrid x:Name="gvPreV" RowHeaderWidth = "70" CanUserAddRows="True" SelectionUnit="Cell"  Margin="10,117,10,10" 
                    ItemsSource="{Binding}"  FontSize="16" BorderThickness="1,1,1,1" AutoGenerateColumns="True"  AllowDrop="True" 
                    Background="White" ColumnHeaderHeight="30" MinColumnWidth="150" 
                    LoadingRow="gvDados_LoadingRow" IsReadOnly="True" CanUserSortColumns="False" 
                    AlternationCount="2" AlternatingRowBackground="#FFF9F9F9" VerticalGridLinesBrush="#FF252424"
                    HorizontalGridLinesBrush="#FF2B2828" MouseDoubleClick="gvPreV_MouseDoubleClick" BorderBrush="#FFB6B6B6" HeadersVisibility="All"
                     SelectionChanged="gvPreV_SelectionChanged" RowHeight="40" MinRowHeight="40" CanUserReorderColumns="False" CanUserResizeColumns="False" CanUserResizeRows="False"        
                 >

        <DataGrid.CellStyle>
            <Style TargetType="{x:Type DataGridCell}" >
                <Setter Property="Background" Value="Green"/>         
                <Style.Triggers>                        
                    <DataTrigger Binding="{Binding Name}" Value="invalid">
                        <Setter Property="Background" Value="Red"/>                         
                    </DataTrigger>
                </Style.Triggers>
            </Style>
        </DataGrid.CellStyle>

    </DataGrid>

我有一个变量名,并且将其设置为无效,因此它将已经保留了所有预期颜色的无效值,但是这无效,所有内容都变为绿色

  string Name = "invalid";
  public ViewConfigAgendaDin()
  {
      InitializeComponent();
      Inicializa();
      gvPreV.ItemsSource = null;
      gvPreV.ItemsSource = dtPreVisualizacao.DefaultView;
      gvPreV.UpdateLayout();
  }

1 个答案:

答案 0 :(得分:0)

改为使用<Style TargetType="{x:DataGridCell}"