将Double绑定到TextBox

时间:2012-01-13 18:18:18

标签: wpf xaml data-binding ivalueconverter

我经常使用TextBox绑定到Integers而没有太多问题。

但是,如果我尝试将TextBox绑定到Double,则它不起作用。

当我键入5,85(作为我的文化decimalSeperator)时,我将585.0传递给double值。

如何转换以及我可以用什么解决方案来解决这个问题? ValueConverter会是最好的解决方案吗?

2 个答案:

答案 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 ......