2011-02-20 4 views
1

저는 ViewModelBase 클래스를 사용하여 INotifyPropertyChanged 인터페이스에 대해 RaisePropertyChanged 메서드를 정의합니다. 대부분의 MVVM 사용자는 이에 대해 잘 알고 있습니다.WPF MVVM : 다른 속성이 변경 될 때마다 Notify 속성이 하나의 속성을 변경했습니다.

ViewModelBase에서 상속받은 Validating ViewModel도 있습니다. 인터페이스와 속성을 검증하는 몇 가지 메소드를 구현합니다. IsValid 속성은 규칙 위반이 있는지 확인하는 getter입니다. 그러나 뷰에서이 속성에 바인딩 할 필요가 없다면 언젠가는 업데이트해야합니다. 이것은 기본적으로 다른 속성이 변경 될 때마다 또는 적어도 유효성을 검사 할 속성이 될 것입니다. 한 가지 간단한 해결책은 IsValid를 RaisePropertyChanged 메서드 내에서 알림하는 것일 뿐이지 만 IsValid가 정의되지 않은 ViewModelBase에서 정의됩니다.

이 딜레마에 대한 해결책이 있습니까? 당신이 패턴을 처리 표준 이벤트를 다음과 같은 경우

+1

유효성이있는 viewmodel 클래스에서 RaisePropertyChanged를 재정의 할 수 없습니까? 그 overriden 메서드에서 IsValid 알릴 수 – thumbmunkeys

+0

그래, 나는 그것을 할 수있을 것 같아요. 너무 간단해서 눈치 채지 못했습니다. 나는 또한 OnRaiseProperty() 가상 메서드를 호출 할 수 있고 상속 된 클래스에서 원하는 경우 사용하는 것 같아요. –

답변

2

이, 당신의 RaisePropertyChanged 방법은 (그것은 아마 protected virtual 방법이어야한다) virtual로 표시됩니다, 그래서 당신은 당신의 검증보기 모델에서이 메소드를 오버라이드 (override) 할 수 있습니다의 전화 기본 구현을 실행 한 다음 IsValid 속성에 대해 PropertyChanged 이벤트를 호출합니다.

내가 뭘하고 있는지 잘 모르겠지만 일반적인 검증이라면 DataAnnotations과 같은 프레임 워크를 사용하는 것이 좋습니다.

+0

왜 DataAnnotations를 사용해야합니까? 나는 그것에 익숙하지 않다, 너는 나에게 일반적인 아이디어를 줄 수 있니? 실제로 IDataErrorInfo를 사용하고 있습니다. –

관련 문제