C# 基于WPF中的列名及其值的DataTriggers

C# 基于WPF中的列名及其值的DataTriggers,c#,wpf,C#,Wpf,我有一个DataGrid,它在代码中用DataTable自动生成它的列。 如果X列的值为FALSE或其他值,我需要更改行的背景色。 我可以用AutoGeneratingColumn=“OnAutoGeneratingColumn”eventargs来完成吗? 如果没有,我如何使用DataTriggers访问列值并影响行的背景色来更改行的样式 编辑1: 直截了当的问题:如何根据某列上的值更改行的背景色 编辑2: 基于生成列事件,我可以执行以下操作: 编辑3:编码 public static voi

我有一个
DataGrid
,它在代码中用
DataTable
自动生成它的列。 如果X列的值为
FALSE
或其他值,我需要更改行的背景色。 我可以用
AutoGeneratingColumn=“OnAutoGeneratingColumn”
eventargs来完成吗? 如果没有,我如何使用
DataTriggers
访问列值并影响行的背景色来更改行的样式

编辑1: 直截了当的问题:如何根据某列上的值更改行的背景色

编辑2: 基于生成列事件,我可以执行以下操作:

编辑3:编码

public static void OnAutoGeneratingColumn(object sender, System.Windows.Controls.DataGridAutoGeneratingColumnEventArgs e)
        {
            try {

                if (e.PropertyType == typeof(System.DateTime) && e.Column.Header.ToString() != "Data de Registo")
                    (e.Column as System.Windows.Controls.DataGridTextColumn).Binding.StringFormat = "dd/MM/yyyy";

                if (e.PropertyType == typeof(System.DateTime) && e.Column.Header.ToString() == "Data de Registo")
                    (e.Column as System.Windows.Controls.DataGridTextColumn).Binding.StringFormat = "dd/MM/yyyy HH:mm:ss";
                if (e.Column.Header.ToString() == "FT")
                {
                    StringReader stringReader = new StringReader("<Style xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\" xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\""
                        + " TargetType=\"{x:Type DataGridCell}\">"
                        + " <Setter Property=\"Background\" Value=\"Red\"/>"
                        + " </Style>");
                    XmlReader xmlReader = XmlReader.Create(stringReader);
                    Style style = (Style)System.Windows.Markup.XamlReader.Load(xmlReader);
                    e.Column.CellStyle = style;
                }
            }
            catch (Exception) { }
        }
AutoGeneratingColumn(对象发送方,System.Windows.Controls.DataGridAutoGeneratingColumnEventArgs e)上的公共静态无效
{
试一试{
if(e.PropertyType==typeof(System.DateTime)和&e.Column.Header.ToString()!=“数据注销”)
(如System.Windows.Controls.DataGridTextColumn.Binding.StringFormat=“dd/MM/yyyy”;
if(e.PropertyType==typeof(System.DateTime)和&e.Column.Header.ToString()==Data de Registo)
(如System.Windows.Controls.DataGridTextColumn.Binding.StringFormat=“dd/MM/yyyy HH:MM:ss”;
if(例如,Column.Header.ToString()=“FT”)
{
StringReader StringReader=新StringReader(“”)
+ " "
+ " ");
XmlReader=XmlReader.Create(stringReader);
Style Style=(Style)System.Windows.Markup.XamlReader.Load(xmlReader);
e、 Column.CellStyle=样式;
}
}
捕获(异常){}
}

因此,我更改了列(其单元格)的背景色,但我想检查每行的值,如果值为X,则为红色;如果值为Y,则为绿色。

数据网格使用
样式
数据触发器
。然后根据绑定的数据项进行格式化

<DataGrid.RowStyle>
    <Style TargetType="{x:Type DataGridRow}">
        <Style.Triggers>
            <DataTrigger Binding="{Binding Path=<!--Your property name here-->}" 
                         Value="False">
                 <Setter Property="Background" Value="<!-- Your desired Brush here-->" />
            </DataTrigger>
        </Style.Triggers>
    </Style>
</DataGrid.RowStyle>


很抱歉,删除了它。。。那不是计划在这里的:-)你救了我的命。非常感谢。每次我使用“绑定路径”时,我指的是datagrid引用的对象,对吗?当您将样式设置为
DataGridRow
(因此
datagrid.RowStyle
)时,它将使用该行的
DataContext
。该行的
DataContext
是由
DataGrid
逻辑实际绑定的
DataTable的
行[i]