问题描述
|
目前,我正在开发Silverlight商业应用程序,并且是第一次进行验证。当我收到验证错误时,控件将按预期显示该错误,但是当我解决验证错误并移至DataForm中的下一个字段(实际上是Telerik RadDataForm,以了解其价值)时,我我在.g.cs文件的实体的设置器中引发了ArgumentOutOfRangeException异常。这是生成的代码:
[DataMember()]
[display(Name=\"Email / User Name\")]
[RegularExpression(\"^.*@.*\\\\..*$\",ErrorMessage=\"Must be a valid e-mail address\")]
[required()]
public string Email
{
get
{
return this._email;
}
set
{
if ((this._email != value))
{
this.OnEmailChanging(value);
this.RaiseDataMemberChanging(\"Email\");
this.ValidateProperty(\"Email\",value); // <-- Exception thrown here
this._email = value;
this.RaiseDataMemberChanged(\"Email\");
this.OnEmailChanged();
}
}
}
这是引起验证的控件的Xaml:
<telerik:RadDataForm Grid.Row=\"0\" Style=\"{StaticResource GridPageFormStyle}\"
x:Name=\"addForm\" EditEnded=\"AddEnded\" Header=\"Add\">
<telerik:RadDataForm.EditTemplate>
<DataTemplate>
<StackPanel>
<telerik:DataFormdatafield
DataMemberBinding=\"{Binding Email,Mode=TwoWay,ValidatesOnExceptions=True,NotifyOnValidationError=True}\"
Label=\"E-mail Address\" />
<telerik:DataFormComboBoxField
DataMemberBinding=\"{Binding Role,NotifyOnValidationError=True}\"
ItemsSource=\"{Binding Roles,ElementName=This}\" Label=\"Role\" />
<telerik:DataFormComboBoxField DataMemberBinding=\"{Binding Partner,NotifyOnValidationError=True}\"
ItemsSource=\"{Binding Partners,ElementName=This}\" Label=\"Partner\" />
</StackPanel>
</DataTemplate>
</telerik:RadDataForm.EditTemplate>
</telerik:RadDataForm>
这是例外的文字:
{System.ArgumentOutOfRangeException: Index was out of range. Must be non-negative and less than the size of the collection.
Parameter name: index
at System.ThrowHelper.ThrowArgumentOutOfRangeException(ExceptionArgument argument,ExceptionResource resource)}
有谁知道为什么会抛出该异常,或者有调试它的好策略?我无法进入实际引发异常的代码。
解决方法
我不确定仍然发生了什么,但事实证明,调试时我可以跳过错误,一切正常。另外,在不进行调试的情况下甚至不会发生错误,因此我现在暂时将其忽略。
, 在我的情况下,答案是在调试设置中取消选中\“当异常跨越AppDomain或受管理时.... \中断。”
资源