代码之家  ›  专栏  ›  技术社区  ›  IFrank

WPF DataGrid:具有固定小数位置的数字列

  •  0
  • IFrank  · 技术社区  · 5 年前

    我在为DataGrid(WPF,而不是Forms DataGridView)中显示的某些数据获得正确的可视化方面遇到了问题。

    我正在加载包含一些数字列的数据表。有些值有小数部分,有些没有,比如2、2.5、10等等。 我看到的是,DataGrid仅在必要时自动显示小数位置,因此“5”的显示方式与“5”相同。为了可读性,我想用一个小数点来格式化所有数字。我试着用 Format(myNumber, "0.0") ,但这会返回一个字符串:那么问题在于排序,它不会按预期执行(这样排序就像字符串,而不是数字)。

    有什么想法吗?有人已经面对过了吗?

    0 回复  |  直到 5 年前
        1
  •  2
  •   NEBEZ    5 年前

    试试这个:

    XAML:

    <DataGridTextColumn Binding="{Binding myNumber, StringFormat=N0}" Header="price"/>
    

    StringFormat=N0 转换 5 5. 如果你想显示一个位置,请使用 N1 显示 5 .

    代码背后:

    myNumber.ToString("N0");

        2
  •  2
  •   IFrank    4 年前

    我终于设法解决了这个问题。

    问题是我必须在代码中生成列。我的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
    

    通过这种方式,我可以很容易地根据用户的喜好调整日期格式。