저는 처음 C#/WPF 프로젝트 (일부 Flex/As 경험이있는 Java/웹 개발자)에서 작업하고 있습니다. MVVM 패턴은 학습 곡선을 등반하기 시작한 것처럼 보입니다 ...MVVM 패턴을 사용할 때 ViewModel 객체간에 상태 변경을 알리는 가장 좋은 방법
관련된 ViewModel 객체간에 상태 변경을 알리는 방법을 알고 싶습니다.
간단히 말해, MyTreeViewModel에 의해 노출 된 ReadOnlyCollection에 바인딩 된 TreeView가 포함 된 UserControl이 있습니다.
SomethingViewModel은 INotifyPropertyChanged를 구현하고 'IsSelected'속성이 변경되면 이벤트를 생성합니다.
MyTreeViewModel에는 SomethingViewModel의 PropertyChanged 이벤트에 연결된 이벤트 핸들러가 있으며 관리하는 'CurrentlySelectedElement'라는 속성을 업데이트합니다.
MyTreeViewModel도 INotifyPropertyChanged를 구현하고 'CurrentlySelectedElement'속성이 변경되면 이벤트를 생성합니다.
마지막으로 필자는 선택 변경을 처리하는 다른 ViewModel 클래스의 이벤트 처리기를 사용합니다.
이 방법이 C#/WPF에서 올바른 방법입니까?
또한 이벤트 처리 메서드에서 문자열에 속성 이름을 사용하는 것을 좋아하지 않습니다. 그것은 나에게 친절한 리팩토링을하는 것처럼 보이지 않습니다. 지금은 내 이벤트 처리기 메서드에서 다음을 사용할 수 있도록 속성 문자열을 정적 문자열로 표시하여 처리했습니다.
if(SomeViewModel.PROPERTY_IS_SELECTED.Equals(e.PropertyName)) { ... }
더 나은 대안을 알고 계십니까? 나는 이것을하기위한 방법이 있어야한다고 생각하지만 솔직히 더는 아직 조사하지 않았다.
의견을 보내 주셔서 감사합니다.
답변 해 주셔서 감사합니다. Event Aggregator를 살펴 보겠습니다. 꽤 유연 해 보였고 유연성이 향상되었습니다. 필자는 MVVM Foundation 프레임 워크 (ObservableObject 및 PropertyObserver)에서 리팩토링에 대한 두 번째 문제를 해결하는 몇 가지 클래스를 작성했습니다. – dSebastien