MVVM 및 WPF를 사용하면 새 창과 대화 상자를 열거 나 닫을 때 처리하는 것이 쉽고 간단합니다. 열기와 닫기는 ViewModel에 의해 주도되어야합니다. 그러나 ViewModel은 뷰에 대해 알지 않아야합니다 ...MVVM을 사용하여 새 Windows를 열고 닫는 것을 어떻게 처리합니까?
답변
저는 일반적으로이 인터페이스를 사용합니다. 예를 들어, 별도의 창에서 레코드를 편집하고 싶다면 인터페이스 IEditingProvider가 <TViewModel>인데, 다른 곳에서 구현 한 다음 인터페이스 참조를 내 ViewModel의 생성자에 전달할 수 있습니다. EditingProvider는 다음과 같이 처리 할 수 있습니다.
class MyRecordEditingProvider: IEditingProvider<MyRecordViewModel>
{
// Implementation of generic interface method
public void Edit(MyRecordViewModel model) {
EditWindow edit = new EditWindow();
edit.DataContext = model;
edit.ShowDialog();
}
}
애플리케이션의 특정 부분에서 사용할 수있는 EditingProviders를 유지 관리하는 방법과 결국 ViewModel의 생성자에 전달할 정확한 인스턴스를 검색하는 방법은 무엇입니까? 나는 모든 것이 고정되어 있지는 않지만 분리되어 있다고 생각하니? – bitbonk
예, 분리되어 있습니다. 실제로 구현에 제네릭 인터페이스를 매핑하기 위해 Dependency Injection Framework (Microsoft의 Composite Application Block)를 사용하고 있습니다. 현재 코드에서 그렇게하고 있지만 Unity Container는 구성 파일을 사용하여 구성 할 수도 있습니다. – Botz3000
ShowDialog를 호출하기 전에 EditWindow의'Owner' 속성을 설정하는 MVVM 친화적 인 솔루션이 있습니까? 소유자가 설정되지 않은 경우 (예 : MainWindow) 모달 대화 상자가 주 창 뒤쪽으로 이동할 수 있습니다. 이는 사용자 관점에서 보면 매우 이상하고 혼란 스럽습니다. – Slauma
- 1. ControlBox가없는 MDI 자식 폼을 열고 닫는 방법
- 2. CMS가 편집 가능한 것을 어떻게 처리합니까?
- 3. 폼 닫는 것을 막으십시오.
- 4. BDD 스토리에서 Devise 인증과 같은 것을 추가하는 것을 어떻게 처리합니까?
- 5. Windows를 브라우저를 사용하여 업데이트하십시오.
- 6. MVVM을 사용하여 WPF 창을 어떻게 이동해야합니까?
- 7. IDataErrorInfo가 새 항목을 실행하는 것을 어떻게 중지시킬 수 있습니까?
- 8. MVVM을 사용하여 복잡한 UI 관리
- 9. MVVM을 사용하여 컨트롤에 컨트롤 포함
- 10. Mac에서 X11을 열고 닫는 로그 파일을 찾을 수 없습니다.
- 11. Windows를 사용하여 파일 다운로드 IStream
- 12. 키보드를 사용하여 우분투에서 Windows를 전환하십시오.
- 13. asp.net 페이지에서 새 브라우저 창을 열고 출력할까요?
- 14. Boost에서 큰 의존성을 어떻게 처리합니까?
- 15. 새 레이아웃을 열고 이전으로 돌아 가기
- 16. javascript 프레임 워크가 304 수정되지 않은 것을 어떻게 처리합니까?
- 17. UIPickerView는 2 개 이상의 다이얼이 회전하는 것을 어떻게 처리합니까?
- 18. "수신"전화가 잘못된 순서로 처리되는 것을 어떻게 처리합니까?
- 19. 새 창을 열고 페인트하기위한 자바 스크립트
- 20. 임시 파일을 어떻게 처리합니까?
- 21. alt 그래프 키 스트로크는 어떻게 처리합니까?
- 22. NHibernate에서 동시성을 어떻게 처리합니까?
- 23. 코어 데이터가 실제 db를 생성하는 것을 처리합니까?
- 24. 이미지를 어떻게 처리합니까?
- 25. MVVM을 사용하여 옵션 목록 작성
- 26. Emacs : 윈도우 관리자 버튼에서 닫는 것을 막으시오.
- 27. 브라우저를 잘못 닫는 것을 방지하는 방법
- 28. aspnet_compiler를 사용하여 제외 된 파일을 어떻게 처리합니까?
- 29. Ninject를 사용하여 정적 메서드가있는 클래스를 어떻게 처리합니까?
- 30. Syrac을 사용하여 JRuby에서 1.9의 YAML을 어떻게 처리합니까?
나는 [이 게시물] (http://stackoverflow.com/a/15512972/385995)에서 매우 비슷한 질문에 대답했습니다. –