我试图弄清楚如何在代码中更改自动生成列的文本对齐方式。
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
答案 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的东西非常有帮助,所以我想提供它。