C# WPF 使用触发器向 Datagrid 中的单元格添加样式对象

C# WPF Add Style Object To Cells In Datagrid Using Trigger

使用此线程的答案Programmatically add style trigger

Style st = new Style();

DataTrigger tg = new DataTrigger()
{
    Binding = new Binding("PackageTechnology_c"),
    Value = "Plastic"
};

tg.Setters.Add(new Setter()
{
    Property = Control.BackgroundProperty,
    Value = ColorConverter.ConvertFromString("Red")
});

st.Triggers.Add(tg);  

我希望能够在 运行 时向我的 Datagrid 添加样式和触发器。创建此样式对象后,如何将样式添加到我的数据网格?我不打算在 XML 内执行此操作,因为我动态创建样式是 运行 时间。我如何使用代码隐藏来做到这一点?

我试过了:

datagrid.Style = st;

结果是:

如果我这样做:

datagrid.CellStyle = st;

然后我明白了:

但我想要的是将“封装技术”列中具有值:“塑料”的单元格变为红色。有办法实现吗?

您要找的是 DataGridColumn.CellStyle。它会将给定的 Style 应用于该特定列中的所有单元格,而不是 DataGrid.

中的每个单元格

由于您是自动生成列,因此您可以使用 DataGrid.AutoGeneratingColumn 事件。它会在每个自动生成的列创建时引发。您可以使用参数来检查正在创建哪个列,如果它是 PackageTechnologyc 列,那么您将创建并设置 Style.

如果您在 XAML 中定义您的列,您将有 <DataGrid Name="datagrid" ...,然后在稍后的某个地方定义 <DataGridTextColumn Header="PackageTechnologyc"...。在这种情况下,您只需将 Name 添加到 DataGridTextColumn,然后像这样引用它:packageTechnologyColumn.Style = st;.