【问题标题】:How to apply text alignment to a datagrid row on the LoadingRow event from code behind如何从后面的代码将文本对齐应用于 LoadingRow 事件上的数据网格行
【发布时间】:2020-07-18 05:02:45
【问题描述】:

我有一个在运行时填充的数据网格。我想强调一些数据。 为此,我使用 LoadingRow 事件。

下面的代码有效:

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;

提前致谢 帕特里克

【问题讨论】:

  • 谢谢,但我不知道你指的是什么标签。你能解释一下吗?
  • 您的问题标题是“C# WPF 如何将文本对齐应用到 LoadingRow 事件中的数据网格行中的代码隐藏”,这意味着它包含 C# 和 WPF 的标签。有关要避免的标题格式的更多示例,请参阅tagging help page 的底部。
  • 如果将row.HorizontalAlignment = row.HorizontalContentAlignment = HorizontalAlignment.Right; 拆分为两个不同的任务,它是否有效?
  • 没有,甚至没有放 row.Horizo​​ntalAlignment = Horizo​​ntalAlignment.Stretch; row.Horizo​​ntalContentAlignment = Horizo​​ntalAlignment.Right;
  • @Patrick:您应该将列的ElementStyle 设置为右对齐单元格值。

标签: c# wpf datagrid row text-alignment


【解决方案1】:

您应该将列的ElementStyle 设置为右对齐单元格值。

如果您只想右对齐具有 ForegroundBrushes.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>

【讨论】:

  • 谢谢,但正如我所说,我只能使用后面的代码,而不能使用 xaml。使用该列可以轻松工作,我必须使用该行来完成
  • 您可以使用XamlReader.Parse 以编程方式创建样式。我不明白你所说的“行”是什么意思。 TextBlock 在一个单元格中,即一行的特定列。您使用 DataTrigger 仅将其应用于特定行。
  • 我要整排行动
  • 然后将相同的Style 应用于所有列。结果和解决方法是一样的。
  • mm8 所说的是解决您的问题。您将样式应用于最后一列,并且在该列中,具有该特定颜色的特定值将正确对齐。
猜你喜欢
  • 2012-05-27
  • 1970-01-01
  • 2011-04-08
  • 2016-11-30
  • 2013-12-04
  • 1970-01-01
  • 1970-01-01
  • 2013-09-17
  • 2020-09-15
相关资源
最近更新 更多