WPF DataGrid:具有固定小数位的数字列
WPF DataGrid: numeric columns with fixed decimals positions
我在为 DataGrid(WPF,而不是 Forms DataGridView)中显示的某些数据获取正确的可视化时遇到问题。
我正在加载我的数据表,其中包含一些数字列。有些值有小数部分,有些则没有,例如 2 、2.5、10 等。
我所看到的是 DataGrid 仅在必要时自动显示小数位,因此“5”的显示方式与“5”一样。出于可读性目的,我想将所有数字格式化为一位小数。我尝试使用 Format(myNumber, "0.0")
,但是这个 return 是一个字符串:问题是排序,它没有按预期执行(这样它的排序就像字符串,而不是数字)。
有什么想法吗?有人已经遇到过这个问题吗?
试试这个:
XAML:
<DataGridTextColumn Binding="{Binding myNumber, StringFormat=N0}" Header="price"/>
StringFormat=N0
将 5.00 转换为 5 如果要显示一个位置,请使用 N1 显示 5.0 .
代码隐藏:
myNumber.ToString("N0");
我终于解决了这个问题。
问题是我必须在代码中生成列。我的 DataGrid 设置为 AutoGenerateColumns=True.
然后我添加了这段代码:
Private Sub DataGrid_OnAutoGeneratingColumn(sender As Object, e As DataGridAutoGeneratingColumnEventArgs) Handles DataGrid.AutoGeneratingColumn
If e.PropertyType = GetType(Date) Then
TryCast(e.Column, DataGridTextColumn).Binding.StringFormat = "yyyy/MM/dd HH:mm:ss"
End If
End Sub
通过这种方式,我可以轻松地根据用户的喜好调整日期格式。
我在为 DataGrid(WPF,而不是 Forms DataGridView)中显示的某些数据获取正确的可视化时遇到问题。
我正在加载我的数据表,其中包含一些数字列。有些值有小数部分,有些则没有,例如 2 、2.5、10 等。
我所看到的是 DataGrid 仅在必要时自动显示小数位,因此“5”的显示方式与“5”一样。出于可读性目的,我想将所有数字格式化为一位小数。我尝试使用 Format(myNumber, "0.0")
,但是这个 return 是一个字符串:问题是排序,它没有按预期执行(这样它的排序就像字符串,而不是数字)。
有什么想法吗?有人已经遇到过这个问题吗?
试试这个:
XAML:
<DataGridTextColumn Binding="{Binding myNumber, StringFormat=N0}" Header="price"/>
StringFormat=N0
将 5.00 转换为 5 如果要显示一个位置,请使用 N1 显示 5.0 .
代码隐藏:
myNumber.ToString("N0");
我终于解决了这个问题。
问题是我必须在代码中生成列。我的 DataGrid 设置为 AutoGenerateColumns=True.
然后我添加了这段代码:
Private Sub DataGrid_OnAutoGeneratingColumn(sender As Object, e As DataGridAutoGeneratingColumnEventArgs) Handles DataGrid.AutoGeneratingColumn
If e.PropertyType = GetType(Date) Then
TryCast(e.Column, DataGridTextColumn).Binding.StringFormat = "yyyy/MM/dd HH:mm:ss"
End If
End Sub
通过这种方式,我可以轻松地根据用户的喜好调整日期格式。