Как применить выравнивание текста к строке сетки данных в событии LoadingRow из кода позади - PullRequest
1 голос
/ 06 апреля 2020

У меня есть сетка данных, которая заполняется во время выполнения. Я хочу выделить некоторые данные. Для этого я использую событие LoadingRow.

enter image description here enter image description here

Код ниже работает:

dtg_ExecutionTimes_PpDescriptions.LoadingRow += (sender, args) =>
{
    int rowNum = args.Row.GetIndex();
    DataGridRow row = (DataGridRow)dtg_ExecutionTimes_PpDescriptions.ItemContainerGenerator.ContainerFromIndex(rowNum);
    switch (m_ListCells[rowNum].Arm)
    {
        case CfgPartPrograms.eArm.ARM1: break;
        case CfgPartPrograms.eArm.ARM2:
                row.Foreground = Brushes.GreenYellow; <-------THAT WORKS :-)
                row.HorizontalAlignment = row.HorizontalContentAlignment = HorizontalAlignment.Right;<-----THAT DOESN'T WORK :-(
                break;
                case CfgPartPrograms.eArm.ARM12: row.Foreground = Brushes.LightSalmon; break;
                default:
                break;
    }
};

Я тоже пробовал со стилем, но по некоторым причинам я не получаю эффекта

var MyStyle = new Style(typeof(DataGridRow)) { Setters = { new Setter(TextBlock.TextAlignmentProperty, TextAlignment.Right) } };
row.Style = MyStyle;

Заранее спасибо, Патрик

1 Ответ

1 голос
/ 06 апреля 2020

Вы должны установить ElementStyle столбца, чтобы выровнять значение ячейки по правому краю.

Если вы хотите выровнять только правые значения с Foreground из Brushes.GreenYellow, вы можете добавить DataTrigger к Style:

<DataGridTextColumn Binding="..." Header="Part program decscription" Width="200">
    <DataGridTextColumn.ElementStyle>
        <Style TargetType="TextBlock">
            <Style.Triggers>
                <DataTrigger Binding="{Binding Foreground,
                    RelativeSource={RelativeSource AncestorType=DataGridRow}}" Value="GreenYellow">
                    <Setter Property="HorizontalAlignment" Value="Right" />
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </DataGridTextColumn.ElementStyle>
</DataGridTextColumn>
...