패턴에 따라 ViewModel은 속성이 (변경 알림과 함께) 공개되고 명령이 (사용자 액션을 VM에 알리기 위해) 뷰를 바인딩한다는 것을 나타냅니다. VM에서 View로 전달되는 유일한 통신은 속성 변경 알림 (보기가 업데이트 된 데이터로 자체를 새로 고칠 수 있도록)입니다.ViewModel에서 View w.r.t.의 메소드를 호출해야하는 시나리오가 있습니까? WPF에서 MVVM?
MVP 또는 PresentationModel 형태의 패턴 (실수하지 않은 경우)에서 View는 메소드, 속성 및 이벤트로 구성된 일반 바닐라 인터페이스를 구현합니다. MVVM을 사용하면 IView에 대한 메소드가 (IView 자체와 함께) 불법화 된 것으로 느낍니다.
내가 생각할 수있는 시나리오 중 하나는보기의 특정 컨트롤에 포커스를 설정하는 것이 었습니다. (사용자가 ActionX를 실행하면 포커스는 즉시 FieldY으로 설정되어야합니다.
- MVP, 난 발표자 또는 PM이 호출 할 IView.ActivateField (NameConstant)로이 쓰기 것입니다.
- MVVM에서이 코드는 해결 방법/약간의 코드 숨김이 필요한 프린지 케이스 인 것 같습니다. VM는 ActiveCield 속성을 구현하며이 속성은 NameConstant로 설정됩니다. 뷰는 변경 알림 이벤트를 선택하고 코드 숨김 이벤트 핸들러에서 Name 컨트롤을 활성화합니다.
위의 내용은 표준에 대한 예외입니까? 또는 VM이보기에서 메소드를 호출해야하는 다른 시나리오가 있습니까?
MVVM은 프리젠 테이션 모델 패턴의 전문화이므로 두 번째 단락에서 작성한 내용을 검토해야한다고 생각합니다. – Bermo