2009-11-09 2 views

답변

7

ErrorProvider은 Winforms 컨트롤입니다. WPF에는 이에 상응하는 것이 없습니다. 그러나 win forms 프로젝트를 만들면 Visual Studio 2008에서 계속 찾을 수 있습니다.

이 문서는 error validation in WPF에 있습니다. 유효성 검사를 처리하는 방법에 대한 유용한 제안 및 아이디어가 있습니다.

0

우선은 이러한 기존 논의를 주석 실례지만, 나는 정확히 같은 질문을했다으로이 도울 수, 시몬의 링크는 제가 사이먼 P.Stevens 튜토리얼을 테스트 할 수

을 "뭔가 시작"하는 데 도움이 솔직히 나는 그다지별로 좋아하지 않았다.

  • 오류를 표시 할 때 responseTemplate을 사용하면 응답 속도가 느려진다.
  • 동일한 클래스에 대해 규칙이 항상 동일한 경우에만 작동합니다 (제 경우에는 양이있을 수 있는데 때로는 음수가 될 수 있음).
  • 국제화 된 응용 프로그램 (필자의 경우)의 경우 외부 라이브러리는 번역 대상인 리소스에 액세스 할 수 없으므로 적절한 메시지를 설정할 수 없습니다. 내 내가 숨기기 할 수있는 조건/디스플레이 도구 설명 및 색상 국경에 관한, 내 텍스트 상자를 설정

    하는 BorderBrush 및 도구 설명과 함께 : 내가 MVVM을 사용하여 생각

아주 잘 어떤 상황을 관리하도록되어있다

XAML :

뒤에
<TextBox x:Name="tbName" Grid.Column="1" Grid.Row="0" Margin="3" LostFocus="tbName_LostFocus" BorderBrush="{Binding BordertbName}" 
       Text="{Binding MonRepere.Nom}" ToolTipService.ToolTip="{Binding ErrorName}" ToolTipService.IsEnabled="{Binding ToolTipNameEnable}"/> 

코드 (LostFocus = WindowsForm에 사용 누구를 위해 남겨주세요) :

private void tbName_LostFocus(object sender, RoutedEventArgs e) 
    { 
     if(tbName.Text=="") 
     { 
      this.mv.ErrorName = Properties.Resources.ErrorEmpty; 

     } 
     else 
     { 
      mv.ErrorName = ""; 
     } 
    } 

다음 뷰 모델 :

private string errorName; 
      public string ErrorName 
      { 
       get { return errorName; } 
       set 
       { 
        errorName = value; 
        if (value == "") 
        { 
         ToolTipNameEnable = false; 
         BordertbName = Brushes.Gray; 
        } 
        else 
        { 
         ToolTipNameEnable = true; 
         BordertbName = Brushes.Red; 
        } 
        this.NotifyPropertyChanged("ErrorName"); 
       } 
      } 
      private Brush bordertbName; 
      public Brush BordertbName 
      { 
       get { return bordertbName; } 
       set 
       { 
        bordertbName = value; 
        this.NotifyPropertyChanged("BordertbName"); 
       } 
      } 
      private bool toolTipNameEnable; 
      public bool ToolTipNameEnable 
      { 
       get { return toolTipNameEnable; } 
       set 
       { 
        toolTipNameEnable = value; 
        this.NotifyPropertyChanged("ToolTipNameEnable"); 
       } 
      } 

규칙이 상황에 대한 구체적인 때 그냥 매우 유용합니다.