WPF StringFormat只允许正数

时间:2015-06-17 17:07:03

标签: c# wpf validation mvvm string-formatting

我只想在我的TextBox中允许正数作为用户输入。

如果我输入-10并使用

<TextBox Text="{Binding Width, StringFormat={}{0:0.00;0.00}}" />

然后它总是显示正数,但背后的数据仍然是负数。

如何正确做到?

2 个答案:

答案 0 :(得分:3)

有很多方法可以解决这个问题,例如OmegaMan's。但我的解决方案是根本不使用文本框。可悲的是,WPF从未被开箱即用的旋转盒/升级控件祝福,但extended WPFToolkit确实有一个。那么为什么要浪费你的时间来解析和处理所有令人讨厌的案件呢?让控制权重举。

<extToolkit:IntegerUpDown Value="{Binding Width}" Minimum="0"/>

完成

答案 1 :(得分:2)

由于验证规则强制执行该值,我建议还检查VM属性中的值以强制/转换它:

public string Width
{
   get { return _width; }
   set 
       {
          int result;
          int.TryParse(width, out result);
          _width = (result < 0 ? result *-1 : result).ToString();   
          PropertyChanged("Width");
       } 
}