2010-03-26 9 views
1

두 개의 속성 - 이름, 링크 (아래)로 클래스를 만듭니다. 나는 Required와 StringLength 속성에 의한 간단한 속성 검증을 사용한다. 이 클래스 객체를 WPF ListBox (textBoxs 포함)에 바인딩합니다.속성 별 유효성 검사 속성

하지만 빈 텍스트 상자가 8 서명없는 것보다는 긴 단어 발생을 쓸 때 :/

나는 화재의 ErrorMessage가 무엇을해야합니까? 또는 다른 방식으로 유효성 검사를 구현하는 방법은 무엇입니까?

  if (value is int) 
      { 
       throw new ArgumentException("Wpisałeś stringa!!"); 
      } 

그러나 디버그 모드에서만 화재 : 속성 검증의 구현/

내 클래스 :

public class RssInfo : INotifyPropertyChanged 
{ 
    public RssInfo() { } 
    public RssInfo(string _nazwa, string _link) 
    { 
     nazwa = _nazwa; 
     link = _link; 
    } 

    private string nazwa; 
    [Required(ErrorMessage = "To pole jest obowiązkowe nAZWA")] 
    public string Nazwa 
    { 
     get { return nazwa; } 
     set 
     { 
      if (value != nazwa) 
      { 
       nazwa = value; 
       onPropertyChanged("Nazwa"); 
      } 
      if (value is int) 
      { 
       throw new ArgumentException("Wpisałeś stringa!!"); 
      } 
     } 
    } 
    private string link; 
    [Required(ErrorMessage="To pole jest obowiązkowe link")] 
    [StringLength(8, ErrorMessage = "Link cannot be longer than 8 characters")] 
    public string Link 
    { 
     get { return link; } 
     set 
     { 
      if (value != link) 
      { 
       link = value; 
       onPropertyChanged("Link"); 
      } 
     } 
    } 

    #region INotifyPropertyChanged Members 

    public event PropertyChangedEventHandler PropertyChanged; 

    #endregion 

    private void onPropertyChanged(string propertyName) 
    { 

     if (this.PropertyChanged != null) 
     { 
      PropertyChanged(this, new PropertyChangedEventArgs(propertyName)); 
     } 
    } 
} 

답변

2

가 바인더 제본하여 TextBoxTextProperty되어

또한 사용을 시도 당신의 이름 RSSInfo 속성? 바인딩 모드는 TwoWays입니까? 또한 TextBox에서 키보드 초점을 잃을 때 TextBox에있는 Text 바인딩이 업데이트된다는 점도 기억하십시오. 각 키보드 입력의 등록 정보를 업데이트하려면 바인딩에 UpdateSourceTrigger="PropertyChanged" 속성을 사용하십시오.

내가 당신 TextBox에서 사용자 정의 ValidationRule를 사용하여 검증을 강화하기 위해 당신을 제안, 우리가 당신의 XAML도 대답은 ;-) 또한

정말 간단 할 수 있습니다 보여줍니다. 이렇게하면 TextBoxValidationRule은 사용자 입력이 유효하지 않은 경우 Text 바인딩을 사용할 수 없게되므로 UI에 모델 (RSSInfo) 이름 및 링크 속성의 유효한 데이터 만 표시 할 수 있습니다. 즉,이 ValidationRule 여기에 ;-)

더 많은 정보를 사용해야입니다 : http://weblogs.asp.net/monikadyrda/archive/2009/06/24/wpf-textbox-validation.aspx

+0

당신은 내게 너무 많은 도움이! 링크에서 포스트는 또한 이렇게 유용하다 :) Monika - 블로그는 누구인지, 또한 나의 국가에서이다, 그러나 나는 결코 그녀의 blog, 감사에 관하여 듣지 않는다! :) – netmajor

관련 문제