有一个我想限制输入范围的文本框。
在这个简单的例子中,Int32 从 0 到 300。
在现实生活中,这个范围更复杂,我不想让 UI 涉及到,除了接收并显示一个有效值。
如果我输入 333,它会返回 300,而 300 在 TextBox 中。
这就是问题所在:
然后,如果我为 3001 添加一个数字,则该集合分配的值为 300。
调用 get 并返回 300。
但 3001 仍在 TextBox 中。
如果我粘贴 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");
}
}
}