decimal在验证后被删除@WPF文本框

本文关键字:@WPF 文本 删除 验证 decimal | 更新日期: 2023-09-27 18:27:50

我在Codebehinde中创建了一个Textbox,并将其绑定到一个双属性。

                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(逗号)这样的值时,它被解析为4545。

如果我输入45.45(点),它将以45,45正确解析。

我使用德语设置,我的十进制分隔符是,

我做错了什么?

decimal在验证后被删除@WPF文本框

尝试设置绑定。将文化转换为目标文化。

例如

 binding.ConverterCulture = CultureInfo.CurrentCulture;

一个明确的、非特定于区域性的解决方案是将其添加到您的App.xaml.cs中,通常WPF将始终使用正确的区域性设置:

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

你试过吗

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