2012-03-14 89 views
1

我在代码behinde中创建一个文本框并将其绑定到一个双重属性。十进制验证后删除@ WPF文本框

   TextBox t = new TextBox(); 
       t.Width = 80; 
       t.DataContext = s;   
       Binding binding = new Binding(); 
       binding.Mode = BindingMode.TwoWay; 
       binding.Path = new PropertyPath("Value"); 
       BindingOperations.SetBinding(t, TextBox.TextProperty, binding); 

当我输入像45,45(逗号)的值。如果我输入45.45(点),它被解析到4545

它被解析正确与45,45。

我用德语设置和我的小数Sperator是,

我到底做错了什么?

回答

3

尝试设置绑定。 ConverterCulture到您的目标文化。

例如

binding.ConverterCulture = CultureInfo.CurrentCulture; 
+0

谢谢!这就是诀窍! – TheJoeIaut 2012-03-14 13:12:23

+0

我很高兴它的工作原理,但Dummy01的答案可能会更好。试一试。 http://stackoverflow.com/questions/5831455/use-real-cultureinfo-currentculture-in-wpf-binding-not-cultureinfo-from-ietfl – Phil 2012-03-14 13:14:13

-1

你有没有试过

System.Threading.Thread.CurrentThread.CurrentCulture = new CultureInfo("de-DE"); 
System.Threading.Thread.CurrentThread.CurrentUICulture = new CultureInfo("de-DE"); 
2

一个明确的,没有文化具体的解决办法是把它添加到您的App.xaml.cs,通常WPF将始终使用正确的文化 - 区域设置:

static App() 
    { 
     FrameworkElement.LanguageProperty.OverrideMetadata(
      typeof(FrameworkElement), 
      new FrameworkPropertyMetadata(XmlLanguage.GetLanguage(CultureInfo.CurrentCulture.IetfLanguageTag))); 
    } 
+0

我现在试过这个,但它不工作。 – TheJoeIaut 2012-03-14 13:23:02

+0

奇怪......如果你做了一个断点那么XmlLanguage.GetLanguage(CultureInfo.CurrentCulture.IetfLanguageTag)返回什么值? – Dummy01 2012-03-14 13:30:37

+0

实际上它根本没有被调用 – TheJoeIaut 2012-03-14 13:33:50