C# WPF使用转换器更改datagrid单元格背景色

C# WPF使用转换器更改datagrid单元格背景色,c#,wpf,datagrid,datagridtextcolumn,C#,Wpf,Datagrid,Datagridtextcolumn,我有一个WPF数据网格。我需要比较datetime类型的两列,并根据比较结果,为当前列和行中的两个单元格设置单元格背景色。我为每个datagrid行执行此操作。为了做到这一点,我使用了一个转换器 <my:DataGridTextColumn Binding="{Binding Path=Date1, StringFormat=\{0:dd/MM/yyyy\}}" Header="Date"> <my:DataGridTextColumn.ElementStyle>

我有一个WPF数据网格。我需要比较datetime类型的两列,并根据比较结果,为当前列和行中的两个单元格设置单元格背景色。我为每个datagrid行执行此操作。为了做到这一点,我使用了一个转换器

<my:DataGridTextColumn Binding="{Binding Path=Date1, StringFormat=\{0:dd/MM/yyyy\}}" Header="Date">
    <my:DataGridTextColumn.ElementStyle>
        <Style TargetType="TextBlock">
            <Setter Property="Background">
                <Setter.Value>
                    <MultiBinding Converter="{StaticResource CellDateColorConverter}">
                        <Binding Path="Date1"/>
                        <Binding Path="Date2"/>
                    </MultiBinding>
                </Setter.Value>
            </Setter>
         </Style>
    </my:DataGridTextColumn.ElementStyle>
</my:DataGridTextColumn>

<my:DataGridTextColumn Binding="{Binding Path=Date2, StringFormat=\{0:dd/MM/yyyy\}}" Header="Date">
    <my:DataGridTextColumn.ElementStyle>
        <Style TargetType="TextBlock">
            <Setter Property="Background">
                <Setter.Value>
                    <MultiBinding Converter="{StaticResource CellDateColorConverter}">
                        <Binding Path="Date1"/>
                        <Binding Path="Date2"/>
                    </MultiBinding>
                </Setter.Value>
            </Setter>
         </Style>
    </my:DataGridTextColumn.ElementStyle>
</my:DataGridTextColumn>
这里我有两个问题:

  • 当date1>date2单元格背景色未更新为棕色时
  • 如果date1 date2.Date)没有,那么单元格背景应该涂成棕色

    利用这篇文章,如果行样式的条件得到满足,并且整个背景设置为橙色,那么如果单元格-列样式(在这篇文章的上面)也得到满足并且需要涂成棕色,那么哪一种占优势?行样式还是单元格样式

  • 返回一个
    画笔

    if (date1.Date > date2.Date)
    {
        return System.Windows.Media.Brushes.Brown;
    }
    
  • 返回
    System.Windows.Data.Binding.DoNothing

  • 返回一个
    画笔

    if (date1.Date > date2.Date)
    {
        return System.Windows.Media.Brushes.Brown;
    }
    
  • 返回
    System.Windows.Data.Binding.DoNothing


  • 这正是我想要的。工作如果行样式和单元格样式都满足要求,哪种样式占优势?按单元格样式设置背景色的行样式中设置背景色?单元格位于行的顶部。再次感谢您的帮助!这正是我想要的。工作如果行样式和单元格样式都满足要求,哪种样式占优势?按单元格样式设置背景色的行样式中设置背景色?单元格位于行的顶部。再次感谢您的帮助!