【问题标题】:WPF DataGrid - Align Column with Autogenerated ColumnsWPF DataGrid - 将列与自动生成的列对齐
【发布时间】:2014-06-06 17:00:40
【问题描述】:

我有一个绑定到 DataSet 的 WPF Datagrid;列是自动生成的。 我需要将数字列向右对齐。我可以使用转换器,就像我在网上找到的这个例子一样:

    <DataGrid x:Name="dg" ItemsSource="{Binding Source}" AutoGenerateColumns="False">
        <DataGrid.Columns>
            <DataGridTextColumn Binding="{Binding Col}" Header="Col" Width="200">
                <DataGridTextColumn.ElementStyle>
                    <Style TargetType="TextBlock">
                        <Setter Property="TextBlock.HorizontalAlignment" Value="{Binding Col, Converter={StaticResource converter}}" />
                    </Style>
                </DataGridTextColumn.ElementStyle>
            </DataGridTextColumn>
        </DataGrid.Columns>
    </DataGrid>

但在我的情况下,列是自动生成的,所以我不能使用

<DataGrid.Columns>

而且我不知道怎么绑定属性

<Setter Property="TextBlock.HorizontalAlignment" Value="{Binding Col, Converter={StaticResource converter}}" />

有什么办法吗?

【问题讨论】:

    标签: c# wpf datagrid


    【解决方案1】:

    这可能不是一个理想的解决方案,但您可以尝试在每列生成后设置 ElementStyle,方法是将处理程序挂钩到 AutoGeneratedColumns 事件。

    这是我尝试过的:

    风格

    <Style TargetType="TextBlock" x:Key="ColumnStyle">
        <Setter Property="HorizontalAlignment" Value="{Binding Path=Text, RelativeSource={RelativeSource Self}, Converter={StaticResource AlignmentConverter}}" />
    </Style>
    

    用于 DataGrid 的 XAML

    <DataGrid x:Name="dg" 
              ItemsSource="{Binding Items}" 
              AutoGenerateColumns="True" 
              AutoGeneratedColumns="Dg_OnAutoGeneratedColumns" 
              SelectionMode="Extended"/>
    

    EventHandler 代码(代码隐藏)

    void Dg_OnAutoGeneratedColumns(object sender, EventArgs e)
    {
        foreach (var dataGridColumn in dg.Columns)
        {
            var textColumn = dataGridColumn as DataGridTextColumn;
            if (textColumn == null) continue;
    
            textColumn.ElementStyle = FindResource("ColumnStyle") as Style;
        }
    }
    

    如果您不喜欢 Code Behind,那么您始终可以创建附加行为来实现相同的结果。

    【讨论】:

      猜你喜欢
      • 2014-03-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-24
      • 2011-01-28
      • 1970-01-01
      • 2017-10-23
      • 2011-10-09
      相关资源
      最近更新 更多