有一个TextBox,我想限制输入范围。
在这个简单的例子Int32从0到300.
在现实生活中,范围更复杂,我不想让用户界面参与,除了接收和显示有效的值。TextBox Not Honoring值返回获取
如果我输入333,它会得到300和300的文本框。
这里的问题是:
然后,如果我添加一个数字为3001套分配的300
得到一个值调用,并返回300
但3001仍然是在文本框。
如果我粘贴3001,那么它正确显示300.
它只有当一个按键笔画使4(或更大)的数字,它失败。
<TextBox Text="{Binding Path=LimitInt, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Width="60" Height="20"/>
public partial class MainWindow : Window, INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
protected void NotifyPropertyChanged(String info)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(info));
}
}
private Int32 limitInt = 0;
public MainWindow()
{
InitializeComponent();
}
public Int32 LimitInt
{
get { return limitInt; }
set
{
if (limitInt == value) return;
limitInt = value;
if (limitInt < 0) limitInt = 0;
if (limitInt > 300) limitInt = 300;
NotifyPropertyChanged("LimitInt");
}
}
}
您需要实现验证。看看[这篇博文](http://weblogs.asp.net/monikadyrda/archive/2009/06/24/wpf-textbox-validation.aspx)。 – 2013-03-06 19:18:44
@MichaelPerrenoud假装我不想使用验证。为什么通过在UI中获取不是那个值来返回值? 301显示300. -1显示0.但3001显示3001. – Paparazzi 2013-03-06 19:28:43
我没有得到同样的问题...我复制/粘贴你的代码,当我按'1'为'3001'时,它给了我'300'。 – 2013-03-06 20:08:21