我經常使用TextBox綁定到整數,沒有太多問題。將文本框綁定到文本框
但是,如果我嘗試將TextBox綁定到Double,它不起作用。
當我鍵入5,85(,作爲我的文化decimalSeperator)我通過585.0到double值。
它如何被轉換,我可以用什麼解決方案來解決這個問題? ValueConverter會是最好的解決方案嗎?
我經常使用TextBox綁定到整數,沒有太多問題。將文本框綁定到文本框
但是,如果我嘗試將TextBox綁定到Double,它不起作用。
當我鍵入5,85(,作爲我的文化decimalSeperator)我通過585.0到double值。
它如何被轉換,我可以用什麼解決方案來解決這個問題? ValueConverter會是最好的解決方案嗎?
你可以嘗試添加這對您的應用程序的構造:
FrameworkElement.LanguageProperty.OverrideMetadata(typeof(FrameworkElement),
new FrameworkPropertyMetadata(XmlLanguage.GetLanguage(CultureInfo.CurrentCulture.IetfLanguageTag)));
但是,請注意,如果您自定義的小數點分隔符,這將無法正常工作。 (WPF double valued data binding with custom decimal separator)
爲什麼不簡單地在主窗口構造函數中設置Language = XmlLanguage.GetLanguage(CultureInfo.CurrentCulture.IetfLanguageTag)? – Clemens 2012-01-13 22:59:01
Clemens,您的解決方案也可以工作,但是您必須記住要將其與應用程序中創建的每個窗口分開放置,與應用程序構造方法相比較,其中語言是爲應用程序中的所有框架元素設置的 – friskm 2012-01-15 10:28:34
您是對的。在這種情況下有意義覆蓋內置依賴項屬性的默認值。 – Clemens 2012-01-15 12:34:29
爲了診斷,你可以在這兩行代碼添加到您的程序的開始......
var cc = Thread.CurrentThread.CurrentCulture;
var cuic = Thread.CurrentThread.CurrentUICulture;
,並比較結果。由於UI線程通常是以這種方式完成的,所以'cuic'文化將保持'en-US'的機會是相當好的。您可以通過在項目文件中設置<UICulture>
標籤更改此,或者你可以嘗試爲診斷...
Thread.CurrentThread.CurrentUICulture = Thread.CurrentThread.CurrentCulture;
和評估副作用。否則,你可以實現一個IValueConverter ...
這聽起來像是要麼不是你的小數點分隔符,要麼應用程序不關心文化。 – 2012-01-13 18:21:04
我正在調試,並確保'NumberFormatInfo.CurrentInfo.NumberDecimalSeparator'是我雖然它。這是正確的財產不是? – 2012-01-13 18:25:29
這聽起來是正確的...... – 2012-01-13 18:28:47