我在验证网格的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此外,我不知道我可以提供哪些其他信息? –