【问题标题】:Comma as decimal seperator in DataGrid逗号作为 DataGrid 中的小数分隔符
【发布时间】:2018-10-10 21:37:00
【问题描述】:

我有一个自定义的 DataGrid,它为一个月的每一天创建一个列,并将其内容绑定到给定的列表。列表的值是双精度值。

现在我想更改输入,以便用户可以写 3,12 而不是 3.12。 我尝试更改没有效果的cultureinfo,并尝试为绑定设置StringFormat,但这也不起作用。一个解决方案是编写一个转换器,但我认为可能有更好的方法来实现这一点,特别是因为我不想为更通用的数据网格使用特定的转换器。

所以我的问题是,您将如何实现这一目标;什么是最好的方法。

编辑:我在发布我的问题后找到了解决方案..

Wpf 始终使用“en-US”文化,您可以通过添加来更改整个程序中的这种行为

            FrameworkElement.LanguageProperty.OverrideMetadata(
            typeof(FrameworkElement),
            new FrameworkPropertyMetadata(
                XmlLanguage.GetLanguage(CultureInfo.CurrentCulture.IetfLanguageTag)));

或者只是将其更改为像这样的特定绑定

            Binding contentBinding = new Binding(PATH);
            contentBinding.ConverterCulture = CultureInfo.CurrentCulture;
            textColumn.Binding = contentBinding;

请注意,您必须对绑定采取额外的步骤,因为 textColumn.Binding 不是 Binding 类型,而是 BindingBase 不再提供 ConverterCulture 属性。

答案来自StringFormat Localization issues in wpf

【问题讨论】:

  • 该特定数据网格是您需要该逻辑的唯一位置,还是您希望您的应用程序具有不同的文化设置?
  • 不,我不需要多种文化,但我在发布此问题后找到了一种方法。我将解决方案添加到我的问题中。

标签: c# wpf


【解决方案1】:

通过这种方式,您可以全局设置您的应用程序以使用您的 Windows 文化。 所以如果你有英文窗口,你将使用点,如果你有德语窗口,你将使用逗号。

FrameworkElement.LanguageProperty.OverrideMetadata(typeof(FrameworkElement),
                new FrameworkPropertyMetadata(
                    System.Windows.Markup.XmlLanguage.GetLanguage(System.Globalization.CultureInfo.CurrentCulture.IetfLanguageTag)));

请记住,此解决方案是全局设置的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-02-10
    • 1970-01-01
    • 1970-01-01
    • 2017-09-30
    • 2014-07-16
    • 2022-10-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多