【问题标题】:How to access DataGridTextColumn String format from code behind c#?如何从 c# 后面的代码访问 DataGridTextColumn 字符串格式?
【发布时间】:2017-03-21 22:02:32
【问题描述】:

我正在使用 WPF 在我的 DataGrid 上显示产品,对于我正在使用 MySql 数据库的数据库,

mysql 中的小数存储为 100.30、100.10、90.40,您可以看到 mysql 使用 dot(".") 作为小数之间的分隔符,并在我的屏幕上以逗号分隔显示它,我使用了下一件事:

 <DataGridTextColumn Binding="{Binding Price, StringFormat='{}{0:C}',ConverterCulture=EN}"   Header="PRICE" FontSize="15" FontFamily="Verdana" Width="10*" />

我在我的 DataGridTextColum 中设置了文化信息,我在其中显示了我的价格,但如果有一天有人想更改该文化信息,我如何才能访问此 DataGridTextColumn 并更改该列“价格”的文化信息......?

谢谢各位, 干杯

【问题讨论】:

    标签: wpf string datagrid format datagridtextcolumn


    【解决方案1】:

    如果您在 XAML 标记中为该列指定 x:Name(如“col1”),您应该能够像这样以编程方式访问它及其属性:

    Binding b = col1.Binding as Binding;
    string format = b.StringFormat;
    var c = b.ConverterCulture;
    

    请注意,您将无法更改绑定的任何属性使用后,因此如果您需要更改文化或StringFormat,您必须在绑定之前的构造函数或通过简单地编辑 XAML 标记。绑定解决后无法以编程方式完成。

    【讨论】:

    • 我不能像你之前写的那样做吗?绑定 b = col1.Binding 作为绑定; b.StringFormat = "N2"; b.ConverterCulture = new System.Globalization.CultureInfo("de-DE");就像我可以存储到数据库字符串 StringFormat "N2" 和 CultureInfo "de-DE" 并且如果有一天我想更改我的列的文化信息,我可以简单地在数据库中更改它,并且在加载此表单时我可以检查它在数据库中并将其添加到与“col1”列名绑定.. 像字符串 CI = GetDefaultCIFromDB();和 b.ConverterCulture = new System.Globalization.CultureInfo(CI);
    • 您可以执行此操作,但前提是您必须在绑定解决之前在窗口的构造函数中执行此操作。绑定属性一经解决,您将无法更改。
    • 在公共 MainWindow() 中是的;每次加载此窗口时,我都可以从数据库中检查字符串格式和文化信息,因为我仅将其用于 2 个 datagridtextcolumns + 我没有从数据库中获取太多数据,这不会是性能问题或类似的事情每次我打开这个表格?
    • ?你觉得我上面写的这个怎么样?没事吧?
    • 是的,只要您在绑定使用后不修改绑定,就修改绑定属性而言是可以的。每次打开窗口时,是否应该首先连接到数据库实际上是另一回事。但我猜你可能只打开应用程序的 MainWindow 一次。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多