我在驗證網格的DataTemplate列中的文本框時遇到問題。文本框綁定的屬性是一個「double」值。這是我對TextBox驗證異常Silverlight驗證
<TextBox Text="{Binding SubTotalRawHours, Mode=TwoWay, ValidatesOnExceptions=True, NotifyOnValidationError=True}"
MinHeight="24" VerticalAlignment="Top" BindingValidationError="ValidateTime" />
這裏XAML代碼屬性
private double _SubTotalRawHours;
public double SubTotalRawHours
{
get { return _SubTotalRawHours; }
set
{
if (value < 0)
{
throw new Exception("Value not allowed");
}
_SubTotalRawHours = value;
NotifyPropertyChanged("SubTotalRawHours");
}
}
現在奇怪的問題是,如果我輸入字母,代碼顯示與錯誤信息提示「輸入不格式正確「,這是正確的。但是如果我輸入一個負值,我會得到一個異常「異常沒有被代碼處理」。 其在這裏
if (value < 0)
{
throw new Exception("Value not allowed");
}
發生的事情我已經嘗試了一切,我甚至試圖把文本框格,但是它不是在外面打工。
真的很感謝這裏的一些輸入。
編輯1
OK,現在我已經做了一些改動的代碼,我有一個解決辦法,而不是"ValidatesOnExceptions=True"
,我已經"ValidatesOnDataErrors=True"
和我的模型類現在還從IDataErrorInfo
繼承和我已經實現了IDataErrorInfo的memeber在我的課
private string _dataError = string.Empty;
const string _ErrorsText = "Errors";
string IDataErrorInfo.Error
{
get { return _dataError; }
}
public string this[string propertyName]
{
get
{
_dataError = null;
switch (propertyName)
{
case "OldHours":
if (OldHours < 0 || OldHours > 100)
{
return "Please enter a value between 0 - 100.";
}
break;
}
return null;
}
}
這是(從顯示在錯誤的地方提示除了但這是罰款)工作。我仍然不明白爲什麼我的代碼沒有發現任何異常。有什麼我不得不添加到我的模型類?
內部異常即將出現爲空。 –
我認爲很難說確切的問題。你可以給我們提供更多的細節。因爲從這裏沒有任何錯誤。 –
看看這篇文章我試圖按照它http://www.codeproject.com/Articles/86955/Silverlight-4-Data-Validation-Tip-of-the-Day-Part此外,我不知道我可以提供哪些其他信息? –