wpf - 如何以编程方式使用 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
解决方案
如果您正在使用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";
}
推荐阅读
- jenkins - With Jenkins Declarative pipeline, how do I set the value of a variable in a stage based on exe output output?
- windows - batch: launch pipenv shell, then run command in the virtual environment
- python - Python无法识别命令,但CMD可以
- ionic-framework - indexOf 对我不起作用。离子
- php - .htaccess url 由 slug 发布
- r - 在 RStudio 中运行时,.First 函数的内容似乎没有被处理
- node.js - Mailjet v3.1 邮件发送失败,错误代码
- sql - 如何在 SSRS/Powerbi 中划分同一列的两行?
- python - 如何创建一个包含空列表的 Python 对象
- python - python中pairplot的单个轴限制