通过后台代码设置DataGridTextColumn.ElementStyle [英] Set DataGridTextColumn.ElementStyle by background code

查看:1294
本文介绍了通过后台代码设置DataGridTextColumn.ElementStyle的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的用户界面中有一个datagrid。数据表将绑定到它。
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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆