我正在尝试弄清楚如何在代码中更改自动生成列的文本对齐方式。
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
4条答案
按热度按时间nqwrtyyt1#
因此,我最终要做的是在XAMLWPF代码中设置一个样式
然后在后面的代码中将单元格样式设置为该样式。
wz8daaqr2#
请参见此处DataGridTextColumn Text Alignment
8xiog9wr3#
几天来我一直在尝试这样做,但我需要一个纯粹是代码背后的解决方案。通过大量的尝试和错误,我终于在不同的地方找到了几个不同的部分,我可以把它们放在一起,以安排我想要的方式对齐。
我知道这是C#,最初的问题是VB的目标,但也许它会解析得足够好。
下面是对我有效的方法,这样下一个沿着的人就不必那么努力了:
首先,我设置了一个样式,使WPF数据网格上的列内容右对齐
然后将CellStyle设置为要右对齐的列上定义的样式,
就像其他事情一样,它很简单......一旦你知道你在追求什么简单的东西。
当然,这可以调整为居中或向左对齐等。
我并不想为此居功,我只是把别人发布的代码重新组合起来,我只是终于有了一些小的贡献,提供给网站,这对我自己努力弄清楚这个.NET的东西有巨大的帮助,所以我想提供它。
ht4b089n4#
我还没有找到静态oneliner,因为它包含了一个空白,但这就是我所做的: