【发布时间】: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 属性。
【问题讨论】:
-
该特定数据网格是您需要该逻辑的唯一位置,还是您希望您的应用程序具有不同的文化设置?
-
不,我不需要多种文化,但我在发布此问题后找到了一种方法。我将解决方案添加到我的问题中。