2013-07-31 5 views
2

내 WPF 애플리케이션에는 3 가지 모델이 있으며 각 뷰 모델에는 & 뷰가 있습니다.뷰 모델 간 전환

메뉴 선택에 따라 기본 창에서 어떻게 이러한보기를 전환합니까?

답변

2

VM 전환은 대부분 데이터 바인딩으로 인해 이동할 경로가 아닙니다. 각 페이지에는 자체 VM이 있어야합니다. 그렇다고해서 VM을 공유 할 수 없다는 의미는 아닙니다. 기본 페이지 VM에 서로 다른 VM이 있으면 전환 할 때 해당 변경 사항을 데이터 바인딩으로 고려하십시오.

+1

각 페이지에 대해 하나의 TabItem을 사용하여 'TabControl'을 사용할 수 있다고 덧붙입니다. –

2

뷰 모델을 사용하는 경우 MVVM을 사용하고 있다고 가정합니다.

한 가지 방법은보기 모델에 대한 기본 클래스를 만든 다음 기본보기 모델에서이 유형의 속성을 만들거나 MainWindow.xaml 파일에서 코드를 만드는 것입니다. 사람들마다 다른 방법을 사용하고 코드를 사용하는 단순한 제안조차도 부정적인 견해를 보지 않고 놀랄 것입니다.

모든 뷰 모델이이 기본 뷰 모델을 확장하면이 속성 중 하나를이 속성의 값으로 설정할 수 있습니다. 이 작업을 수행하는 방법은 여러 가지가 있으며, 다시 ...보기 모델 뷰를 연결합니다 App.xaml의 각 뷰 모델 유형에 대한 기본 DataTemplate의를 설정할 수 있습니다, 그러나 이것은 나의 선호하는 방법입니다 :

<DataTemplate DataType="{x:Type ViewModels:MainViewModel}"> 
    <Views:MainView /> 
</DataTemplate> 
<DataTemplate DataType="{x:Type ViewModels:UsersViewModel}"> 
    <Views:UsersView /> 
</DataTemplate> 

그런 다음 MenuItem 개체를이 기본보기 모델의 Command 개체에 간단하게 연결할 수 있습니다. 이 Command에서 관련 뷰 모델을 ViewModel 속성의 값으로 설정하면 뷰가 자동으로 업데이트됩니다.