现在我想更改输入,以便用户可以写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属性,因此您必须采取更多的绑定操作。
答案 0 :(得分:0)
这样,您可以为应用程序全局设置以使用Windows文化。 因此,如果您使用的是英语窗口,则将使用点号;如果您使用的是德语窗口,则将使用逗号。
FrameworkElement.LanguageProperty.OverrideMetadata(typeof(FrameworkElement),
new FrameworkPropertyMetadata(
System.Windows.Markup.XmlLanguage.GetLanguage(System.Globalization.CultureInfo.CurrentCulture.IetfLanguageTag)));
请记住,此解决方案是全局设置的。