4

ユーザー インターフェイスにデータグリッドがあります。データテーブルがそれにバインドされます。データテーブルの形式が異なる可能性があるため、コードビハインドでグリッドの列とバインド値を追加します。下記参照:

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);
}

私が欲しいのは、値に基づいてグリッドセルの背景色を設定することです。

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>

しかし、XAML でグリッドの列を設定することはできません。このグリッドの形式は異なるためです。

私に何ができる?

4

1 に答える 1

5

コードで同じことを行うだけです:

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);
}
于 2012-08-23T11:31:46.817 に答える