2012-07-01 2 views
0

예외 기반 데이터 유효성 검사를 수행하는 Silverlight 폼이 있습니다. 다음과 같이 검증 될VS2010-Silverlight5의 디자인 타임 ArgumentNullException 경고 제거

설정 컨트롤 :

public new string residenza 
    { 
     get { return base.residenza; } 
     set 
     { 
      if (string.IsNullOrEmpty(value)) throw new ArgumentNullException("value"); 
      base.residenza = value; 
     } 
    } 

기본 클래스를 정의를 다음과 같이

<TextBox Text="{Binding Mode=TwoWay,NotifyOnValidationError=True, Source={StaticResource docSan}, Path= metadati.paziente.residenza, ValidatesOnExceptions=True}"/> 

대상 속성 작업을 확인 나는이 데이터 유효성 검사에게 다음과 같은 방법을 수행하는 방법을 배웠습니다 INotifyPropertyChanged 방법의 유효성을 확인하지 않는 속성

불행히도 VS2010은 디자인 타임에 각 텍스트 상자의 예외에 대해 경고합니다. 이것은 응용 프로그램이 실행되는 것을 막지는 않지만 (fine) 작동하지만 방해가됩니다.

누군가는 디자인 타임에 값이 지정되지 않았 으면 코드가 자연스럽게 throw되는 것을 VS에 알리는 방법을 알고 있습니까?

답변

1

제가 올바르게 이해한다면 디자이너에서 경고를 발생시키는 것은 setter의 if ... throw 문입니까?

난 당신이 디자인 타임에서 실행이 줄을 방지하기 위해 DesignerProperties.IsInDesignTool를 사용할 수 있다고 생각 :

set 
{ 
    if (!System.ComponentModel.DesignerProperties.IsInDesignTool) 
    { 
     if (string.IsNullOrEmpty(value)) throw new ArgumentNullException("value"); 
    } 
    base.residenza = value; 
} 
+0

가 작동하지 않는 것 같습니다. XAML 파일을 열면 IDE의 모든 오류가 발생하지만 F6 키를 누르면 오류가 사라지지만 편집기 상단에 경고가 표시되고 설계된 컨트롤을 클릭 할 수 없습니다. 어쩌면 나는 이유를 이해했다. 디자이너가 ** null 인 데이터 바인딩 된 객체에서 시작하여 텍스트 상자에 값을 설정하려고하기 때문에 ** getter ** 부분에 문제가있을 수있다. 값이 null 인 경우 getter를 변경하고 빈 문자열을 반환해야하지만 너무 이상하게 보일 수 있습니다. 모든 사람들이 문제없이 데이터 바인딩을 사용합니다. –

+0

Visual Studio는 다음과 같은 메시지를 표시합니다 : Il valore non può essere null. Null 매개 변수 : System.Windows.Controls.TextBox.set_Text (문자열 값) 의 텍스트 "null 값일 수 없습니다. 매개 변수 이름 : 텍스트" –

+0

맨 아래로 갔습니까? 나는 그 자체로 오류를 재현 할 수는 없지만 몇 가지 더 슛을 줄 것이다. 바라기를 나는 이러한 시도에서 충분한 해결책을 찾을 수 있습니다. –