我经常使用TextBox绑定到Integers而没有太多问题。
但是,如果我尝试将TextBox绑定到Double,则它不起作用。
当我键入5,85(作为我的文化decimalSeperator)时,我将585.0传递给double值。
如何转换以及我可以用什么解决方案来解决这个问题? ValueConverter会是最好的解决方案吗?
答案 0 :(得分:4)
您可以尝试将此添加到应用程序的构造函数中:
FrameworkElement.LanguageProperty.OverrideMetadata(typeof(FrameworkElement),
new FrameworkPropertyMetadata(XmlLanguage.GetLanguage(CultureInfo.CurrentCulture.IetfLanguageTag)));
但请注意,如果您自定义小数点分隔符,则无法使用此功能。 (WPF double valued data binding with custom decimal separator)
答案 1 :(得分:1)
出于诊断目的,您可以将这两行代码添加到程序的开头......
var cc = Thread.CurrentThread.CurrentCulture;
var cuic = Thread.CurrentThread.CurrentUICulture;
并比较结果。 “cuic”文化将保持“en-US”的可能性非常大,因为UI线程通常以这种方式完成。您可以通过在项目文件中设置<UICulture>
标记来更改此设置,也可以尝试作为诊断...
Thread.CurrentThread.CurrentUICulture = Thread.CurrentThread.CurrentCulture;
并评估副作用。否则你可以实现IValueConverter ......