如何更改自动生成的列文本对齐方式

时间:2013-12-10 00:11:36

标签: wpf vb.net datagrid alignment

我试图弄清楚如何在代码中更改自动生成列的文本对齐方式。

    Private Sub dgBook_AutoGeneratingColumn(sender As System.Object, e As System.Windows.Controls.DataGridAutoGeneratingColumnEventArgs) Handles dgBook.AutoGeneratingColumn
        If e.PropertyType = GetType(DateTime) Then
            Dim dataGridTextColumn As DataGridTextColumn = TryCast(e.Column, DataGridTextColumn)
            If dataGridTextColumn IsNot Nothing Then
                dataGridTextColumn.Binding.StringFormat = "{0:d}"
            End If
        End If

        If e.PropertyName = "Amount" Then
            Dim dataGridTextColumn As DataGridTextColumn = TryCast(e.Column, DataGridTextColumn)
            If dataGridTextColumn IsNot Nothing Then
                dataGridTextColumn.Binding.StringFormat = "{0:#,##0.00;(#,##0.00)}"
                'I tried the next line for testing but it did not work
                dataGridTextColumn.SetValue(TextBox.TextAlignmentProperty, TextAlignment.Center)
            End If
        End If
     End Sub

3 个答案:

答案 0 :(得分:2)

所以我最终做的是在XAML WPF代码中设置样式

<Window.Resources>
    <Style TargetType="DataGridCell" x:Key="rightAlignCell">
        <Setter Property="HorizontalAlignment" Value="Right"></Setter>
    </Style>
</Window.Resources>

然后我在后面的代码中将单元格样式设置为该样式。

Private Sub datagrid1_AutoGeneratingColumn(sender As System.Object, e As System.Windows.Controls.DataGridAutoGeneratingColumnEventArgs) Handles datagrid1.AutoGeneratingColumn
    If e.PropertyName = "Amount" Then
        Dim dataGridTextColumn As DataGridTextColumn = TryCast(e.Column, DataGridTextColumn)
        If dataGridTextColumn IsNot Nothing Then
            dataGridTextColumn.Binding.StringFormat = "{0:#,##0.00;(#,##0.00)}"
        End If
        e.Column.CellStyle = TryCast(FindResource("rightAlignCell"), Style)
    End If
end sub

答案 1 :(得分:1)

答案 2 :(得分:0)

我一直试图自己这样做几天,但我需要/想要一个纯粹代码背后的解决方案。经过大量的反复试验,我终于在不同的地方找到了几个不同的部分,我可以把它放在一起,按照我想要的方式排列。

我知道这是C#,最初的问题是VB目标,但也许它会解析得很好。

这对我有用,所以下一个人不必非常努力工作:

首先,我设置一个样式来右对齐WPF DataGrid上列的内容

Style rightStyle = new Style { TargetType = typeof(DataGridCell) };
style.Setters.Add(new Setter(Control.HorizontalAlignmentProperty, HorizontalAlignment.Right));

然后我将CellStyle设置为我想要右对齐的列上定义的样式,

dataGridTextColumn.CellStyle = style;

就像其他一切一样,这很简单......一旦你知道你正在追求的那些 stinkin'简单的东西。

当然,这可以调整为对齐中心或左侧等。

我不是故意为此,我只接受其他人发布的代码并重新组装各个部分。我最后对该网站提供了一些小的贡献,这对我自己努力找出这个.NET的东西非常有帮助,所以我想提供它。