如何更改自动生成的列文本对齐方式
Posted
技术标签:
【中文标题】如何更改自动生成的列文本对齐方式【英文标题】:How to change Autogeneratedcolumn text alignment 【发布时间】:2013-12-27 07:46:46 【问题描述】:我想弄清楚如何在代码中更改自动生成的列的文本对齐方式。
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
【问题讨论】:
尝试改变单元格的样式 @atomaras 我不确定我会如何改变对齐方式。有代码示例吗? 【参考方案1】:请看这里DataGridTextColumn Text Alignment
【讨论】:
我试图弄清楚如何通过代码设置值,因为列是自动生成的。 我试过了:dataGridTextColumn.SetValue(TextBox.TextAlignmentProperty, TextAlignment.Center)
但没用。【参考方案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
【讨论】:
这很好,但我必须将FindResource("rightAlignCell")
替换为 DirectCast(sender, DataGrid).FindResource("rightAlignCell")
才能使其正常工作。【参考方案3】:
这几天我一直在尝试自己做这件事,但我需要/想要一个纯代码背后的解决方案。经过大量的尝试和错误,我终于在不同的地方找到了几个不同的部分,我可以将它们放在一起以按照我想要的方式排列对齐。
我知道这是 C# 并且最初的问题是针对 VB 的,但也许它会解析得足够好。
这对我有用,所以下一个来的人不必那么努力工作:
首先我设置了一种样式来右对齐 WPF DataGrid 上列的内容
Style rightStyle = new Style TargetType = typeof(DataGridCell) ;
style.Setters.Add(new Setter(Control.HorizontalAlignmentProperty, HorizontalAlignment.Right));
然后我将 CellStyle 设置为我想要右对齐的列上定义的样式,
dataGridTextColumn.CellStyle = style;
就像其他所有事情一样,这很简单......一旦你知道你所追求的东西很简单。
当然,这可以调整为居中或左对齐等。
我并不是要为此归功于自己,我只是采用了其他人发布的代码并重新组装了各个部分。我终于有一些小小的贡献可以提供给该网站,这对我自己弄清楚这个 .NET 东西的努力有很大帮助,所以我想提供它。
【讨论】:
以上是关于如何更改自动生成的列文本对齐方式的主要内容,如果未能解决你的问题,请参考以下文章