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;
.
使用此线程的答案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;
.