通过后台代码设置DataGridTextColumn.ElementStyle [英] Set DataGridTextColumn.ElementStyle by background code
本文介绍了通过后台代码设置DataGridTextColumn.ElementStyle的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
datac可能有不同的格式,所以我添加列和绑定值为网格代码后面。 (int iLoop = 0; iLoop< dtGroup.Columns.Count; iLoop ++)
$ b $
DataGridTextColumn dgColumn = new DataGridTextColumn();
dgColumn.Header = dtGroup.Columns [iLoop] .ColumnName;
dgColumn.Binding = new Binding(dtGroup.Columns [iLoop] .ColumnName);
this.dgGroupMatrix.Columns.Add(dgColumn);
}
我想要的是让网格单元的背景颜色基于值。 / p>
我可以通过XAML做到这一点。
< DataGrid.Columns> ;
< DataGridTextColumn Binding ={Binding Path = operation_name}Header =operation_name>
< DataGridTextColumn.ElementStyle>
< Style TargetType ={x:Type TextBlock}>
< Style.Triggers>
< Trigger Property =TextValue =V31>
< Setter Property =BackgroundValue =LightGreen/>
< / Trigger>
< /Style.Triggers>
< / Style>
< /DataGridTextColumn.ElementStyle>
< / DataGridTextColumn>
< /DataGrid.Columns>
但是我无法在XAML设置网格的列,该网格的Beacuse将具有不同的格式。 / p>
我可以做什么?
解决方案
只要做同样的事情代码:
for(int iLoop = 0; iLoop< dtGroup.Columns.Count; iLoop ++)
{
DataGridTextColumn dgColumn = new DataGridTextColumn();
dgColumn.Header = dtGroup.Columns [iLoop] .ColumnName;
dgColumn.Binding = new Binding(dtGroup.Columns [iLoop] .ColumnName);
样式columnStyle = new Style(typeof(TextBlock));
触发backgroundColorTrigger = new Trigger();
backgroundColorTrigger.Property = TextBlock.TextProperty;
backgroundColorTrigger.Value =V31;
backgroundColorTrigger.Setters.Add(
new Setter(
TextBlock.BackgroundProperty,
new SolidColorBrush(Colors.LightGreen)));
columnStyle.Triggers.Add(backgroundColorTrigger);
dgColumn.ElementStyle = columnStyle;
this.dgGroupMatrix.Columns.Add(dgColumn);
}
I have a datagrid in my user interface. A datatable will bind to it. Beacuse of datatable may have different format, so i add column and bind value for grid at code behind. see below:
for (int iLoop = 0; iLoop < dtGroup.Columns.Count; iLoop++)
{
DataGridTextColumn dgColumn = new DataGridTextColumn();
dgColumn.Header = dtGroup.Columns[iLoop].ColumnName;
dgColumn.Binding = new Binding(dtGroup.Columns[iLoop].ColumnName);
this.dgGroupMatrix.Columns.Add(dgColumn);
}
What i want is let grid cell`s background color based on value.
I can do that by XAML.
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Path= operation_name}" Header="operation_name">
<DataGridTextColumn.ElementStyle>
<Style TargetType="{x:Type TextBlock}">
<Style.Triggers>
<Trigger Property="Text" Value="V31">
<Setter Property="Background" Value="LightGreen"/>
</Trigger>
</Style.Triggers>
</Style>
</DataGridTextColumn.ElementStyle>
</DataGridTextColumn>
</DataGrid.Columns>
But i can not set up grid's column at XAML, Beacuse of this grid will have different format.
What can i do?
解决方案
Just do the same thing in code:
for (int iLoop = 0; iLoop < dtGroup.Columns.Count; iLoop++)
{
DataGridTextColumn dgColumn = new DataGridTextColumn();
dgColumn.Header = dtGroup.Columns[iLoop].ColumnName;
dgColumn.Binding = new Binding(dtGroup.Columns[iLoop].ColumnName);
Style columnStyle = new Style(typeof(TextBlock));
Trigger backgroundColorTrigger = new Trigger();
backgroundColorTrigger.Property = TextBlock.TextProperty;
backgroundColorTrigger.Value = "V31";
backgroundColorTrigger.Setters.Add(
new Setter(
TextBlock.BackgroundProperty,
new SolidColorBrush(Colors.LightGreen)));
columnStyle.Triggers.Add(backgroundColorTrigger);
dgColumn.ElementStyle = columnStyle;
this.dgGroupMatrix.Columns.Add(dgColumn);
}
这篇关于通过后台代码设置DataGridTextColumn.ElementStyle的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文