2013-02-27 2 views
0

디자인을 구현하거나 MVVM 방식과 관련하여 디자인이 잘못되었는지를 이해하는 가장 좋은 방법을 찾으려고합니다.MVVM -보기가 다른 ViewModels에 대해 얼마나 알 수 있습니까?

아이디어는 내 MainWindow에는 2 개의 컨트롤이 있습니다. A Menu (일반, 파일, 편집 등) 및 ContentControl입니다. ContentControl은 내 MainWindowViewModel의 속성에 바인딩합니다.

응용 프로그램이로드되면 내 MainWindowViewModel의 생성자가 내 WelcomeView에 속성 (Called CurrentView)을 바인딩합니다. 2 개의 버튼이있는 환영 메시지입니다. 1 단추는 SearchView라는 새보기를 열며, 다른 단추는 AddView라는보기를 엽니 다.

내가 가진 문제는 이것이 어떻게 작동 할 것인가에 대한 내 머리를 얻는 것입니다.

내 WelcomeViewModel은 MainWindow 뷰 모델을 알고 있습니까? 나는 메모를한다. 어쩌면 App.xaml 내에서 "클릭 했으니 까 내게 가까이 가서 새보기를여십시오"라는 함수를 호출해야할까요?

제 질문이 명확히 드러나기를 바랍니다. 그렇지 않으면 알려주세요.

+0

귀하의 질문은 100 % 명확하지 않지만, 그렇습니다. ViewModel은 완벽하게 유효한 다른 ViewModel을 직접 참조 할 수 있습니다. –

+0

@HighCore - 명확하지 않지만 미안하지만 대답 해 주셨습니다. 자, 내 MainWindowViewModel에 CurrentView라는 속성이 있다고 가정 해 봅시다. 내 MainWindowViewModel의 CurrentView 속성은 WelcomeViewModel을 통해 이루어질 수 있습니다 (화면의보기를 변경하는 방법). – Dave

답변

1

예.

을 MAINVIEW는 "이 변경 될 때마다이

<ContentPresenter Content="{Binding ActiveViewModel}"/>,

는 다음 MainViewModel이 때문에

public BaseViewModel ActiveViewModel {get;set;} //NotifyPropertyChanged, of course =)

을 가지고있다 : 이것은 내가 WPF에서"부분적인 전망을 '해결 방법입니다 활성 ViewModel "이면 contentpresenter는 해당 VM에 대한보기를 표시합니다. 마찬가지로 간단합니다.

+0

이것은 정확히 내가 가지고있는 것과 똑같습니다. 이상한 우연의 일치지만 행복한 것. 이것은 훌륭합니다. 고맙습니다. – Dave

관련 문제