2013-02-13 2 views
0

OK. 따라서 제이슨 돌린 저 (Jason Dolinger)의 베스트 introduction to MVVM 비디오를 본 후 (WPF를 시작하는 사람이라면 누구에게나 추천합니다. 흥미로운 내용으로 한 시간이 넘으면 앞으로 1 시간이면 좋은 수익을 올릴 것이라고 약속합니다.) 이제는 구현하게되어 기쁩니다. 내 프로젝트에서.MVVM에서 다른보기를 가져 오는 방법

확인. 여기 내 MainWindow 클래스, 내 프로젝트의 주 MDI 창 역할을하는 XAML 창이 있습니다. 내 윈도우에 대한 ViewModel을 추가하고 이벤트 핸들러 등을 추가하는 대신 ViewModel 멤버에 바인딩하도록 메뉴 항목을 요청합니다.

지금까지는 그렇게 좋았습니다. 이제 사용자가 메뉴 항목을 클릭하는 것을 처리 할 명령에 실제 코드를 작성해야합니다. 관련 명령을 입력하자마자 내 명령이나 ViewModel에 실제 View 클래스 나 다른 뷰/뷰 모델에 대한 참조가 없다는 것을 알았습니다.

제 질문은, 명령 실행에 대한 응답으로 다른보기를로드하려면 어떻게합니까? ViewModel을 모두 통과해야합니까, 아니면 명령 객체가 뷰에 직접 액세스해야합니까? 여기의 표준 연습은 무엇입니까?

+0

주 창의 datacontext를 변경해야합니다. MainWindow.xaml에서 모든 뷰와 뷰 모델을 추가 한 다음 모든 뷰에서 기본 창 개체를 갖게됩니다. 따라서 한 뷰에서 다른 뷰로 이동할 때마다 MainWindow 객체의 데이터 접미어를 새 뷰로 변경합니다. –

+1

@FaisalHafeez : 말도 안되는 것 같습니다. – dotNET

답변

0

이 명령이 수행하는 유일한 작업은 명령이보기를 가질 수있는 것보다보기 (다른 논리가 없음)와 관련된 경우입니다. 그렇지 않으면 명령을 2 개의 명령으로 분할하고 작성하십시오. 귀하의 도메인과 관련된 비즈니스 로직을 포함하지 않는 한, ui 명령을 사용하는 것이 좋습니다.

0

일반적으로 어떤 유형의 Panel으로보기 (뷰 모델에 올바르게 연결됨)를 추가해야합니다. 당신이하는 일은 정확히 당신에게 달린 것입니다.

더러운 해결책은 단순히 어딘가에서 패널에 대한 참조를 가져 와서보기 및보기 모델을 만들고 패널에보기를 추가하는 것입니다. 이 방법이 효과적 일지 모르지만, 매우 바람직하지 않은 많은 구현 세부 사항에 명령을 연결합니다.

해당 상태를 개선하려면 적합한 추상화 레이어를 추가해야합니다. MVVM 프레임 워크가 다른 MVVM 프레임 워크가 어떻게 작동하는지에 대한 아이디어를 얻는 방법을 알면 유용 할 것입니다. 예를 들어, Prism은 regions이라는 개념을 사용하여이 작업을 수행합니다.