【问题标题】:decimal removed after validation @ WPF Textbox验证后删除小数 @ WPF 文本框
【发布时间】:2012-03-30 22:32:25
【问题描述】:

我在 Code behinde 中创建一个文本框并将其绑定到一个双属性。

                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。

我使用德语设置,我的十进制操作符是 ,

我做错了什么?

【问题讨论】:

    标签: c# wpf validation comma


    【解决方案1】:

    尝试将 binding.ConverterCulture 设置为您的目标文化。

    例如

     binding.ConverterCulture = CultureInfo.CurrentCulture;
    

    【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 奇怪...如果你在那里做一个断点 XmlLanguage.GetLanguage(CultureInfo.CurrentCulture.IetfLanguageTag) 返回什么值?
    • 其实根本没有调用
    • 这是不可能的,因为这是您应用程序的静态构造函数。它应该在启动期间调用一次。
    • ...除非您将启动类的名称从 App 更改为其他名称
    • @Daniel Rose 你是对的......我自己检查过......这非常令人失望,当然它可能会发生。感谢您用这个“唤醒”我。
    【解决方案3】:

    你试过了吗

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

    【讨论】:

      猜你喜欢
      • 2015-03-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-21
      • 2014-06-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多