有一個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