我有一个执行基于异常的数据验证的Silverlight表单。我学会了如何通过以下方式进行数据验证:
将控件设置为验证如下:
<TextBox Text="{Binding Mode=TwoWay,NotifyOnValidationError=True, Source={StaticResource docSan}, Path= metadati.paziente.residenza, ValidatesOnExceptions=True}"/>
使目标属性如下工作
public new string residenza
{
get { return base.residenza; }
set
{
if (string.IsNullOrEmpty(value)) throw new ArgumentNullException("value");
base.residenza = value;
}
}
基类以INotifyPropertyChanged
方式定义非验证属性
不幸的是,VS2010在设计时警告我每个文本框的异常。这并不妨碍应用程序运行(它可以正常运行精细),但这只是烦人的。
有人知道如何告诉VS,如果在设计时没有指定值,那么代码会自然抛出吗?
答案 0 :(得分:1)
如果我理解正确,那么设置器中的if ... throw
语句会导致设计器中出现警告吗?
我认为您可以使用DesignerProperties.IsInDesignTool
来阻止此行在设计时运行:
set
{
if (!System.ComponentModel.DesignerProperties.IsInDesignTool)
{
if (string.IsNullOrEmpty(value)) throw new ArgumentNullException("value");
}
base.residenza = value;
}