繁体   English   中英

C# WPF 使用触发器将样式 Object 添加到 Datagrid 中的单元格

[英]C# WPF Add Style Object To Cells In Datagrid Using 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);  

我希望能够在运行时添加 styles 并触发到我的 Datagrid。 一旦我创建了这种样式 object,如何将样式添加到我的数据网格中? 我不想在 XML 中执行此操作,因为我正在动态创建 styles 是运行时的。 我如何使用代码隐藏来做到这一点?

我试过了:

datagrid.Style = st;

结果是: 风格

如果我做:

datagrid.CellStyle = st;

然后我得到这个: 在此处输入图像描述

但我想要的是具有值的单元格:“包装技术”列中的“塑料”变为红色。 有没有办法做到这一点?

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM