首页 > 解决方案 > 如何以编程方式使用 vb.net 更改 WPF 中数据网格列的字符串格式?

问题描述

基本上,我想要做的是 WinForm Datagridview 等价于dgvPreview.Columns(4).DefaultCellStyle.Format = "#,##0.00" 但不是 Datagridview,它与 WPF 中的 Datagrid 一起使用。我能做的最好的是将数据表分配给 Datagrid 并更改其对齐属性。

DataGridPreview.ItemsSource = dtPreview.DefaultView

Private Sub BtnTest_Click(sender As Object, e As RoutedEventArgs) Handles BtnTest.Click
    Dim txt As New DataGridTextColumn()
    Dim s As New Style
    s.Setters.Add(New Setter(TextBox.TextAlignmentProperty, TextAlignment.Right))
    txt.CellStyle = s
    DataGridPreview.Columns(4).CellStyle = s
    'dgvPreview.Columns(4).DefaultCellStyle.Format = "#,##0.00"
End Sub

请指出我正确的方向。我正在尝试从 Winforms 迁移到 WPF。我想尽可能地以编程方式做到这一点。我也尝试过使用 AutoGeneratingColumn 但我无法弄清楚。

If e.Column.Header.ToString = "Amount" Then        
    Dim dg As DataGridTextColumn = e.Column
    dg.Binding.StringFormat = "#,000.00"
End If

标签: wpfvb.netdatagrid

解决方案


如果您正在使用AutoGeneratingColumn,则最好的时间来更新StringFormat正在发生的AutogeneratingColumn事件。列的绑定用作单个单元格绑定的蓝图,因此对于某些更新,在创建单元格之前执行它们很重要。在 C# 中,它将是这样的:

    public MainWindow()
    {
        InitializeComponent();
        grid.ItemsSource = Enumerable.Range(0, 10).Select(s => new { Id = s });
    }

    private void DataGrid_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e)
    {
            (e.Column as DataGridTextColumn).Binding.StringFormat = "0.000";
    }

推荐阅读