2009-11-17 2 views
4

내 질문은 실제로 MVVM을 사용하여 응용 프로그램을 시작하는 것입니다.MVVM을 사용하여 복잡한 UI 관리

주 화면은 많은 화면을 호스팅합니다. 나는 그들이 UserControls 될 것을 이해합니다.

하지만 내가 보여줄 때, 그리고 내가 그들을 숨길 때 내가 원하는 순간에 내가 어디에서 나타나는지 보여주지 않습니다.

논리가 분명하지 않습니다. 누군가 나를 설명하거나 간단하고 명확한 예를 가르쳐 주시겠습니까?

감사 존

답변

2

주 화면에 바인딩하는 MainViewModel이 있다고 상상해보십시오. MainViewModel을 싱글 톤 클래스로 지정하고 'CurrentViewModel'속성 (INotifypropertyChanged가 구현 됨)이 있습니다. 지금 당신은 당신의 메인 화면 XAML 당신은 적절한 정의 할 필요가

<Window> 
    <ContentControl Content="{Binding CurrentViewModel,Source={x:static vm:MainViewModel.Instance}}" 
</Window> 

해야합니다 (명령/클릭 기준) 특정의 ViewModel을 인스턴스화 그래서 지금

MainViewModel.Instance.CurrentViewModel = new SomeViewModel();

다음과 같이 인스턴스를 할당 할 수 있습니다 각 ViewModels에 대한 DataTemplates (ViewModel 매핑보기). 그 모양은 다음과 같습니다

<DataTemplate DataType="{x:Type vm:SomeViewModel}"> 
    <view:SomeView/> 
</DataTemplate> 

여기 SomeView는 SomeVieModel에 해당하는 UserControl입니다.

희망 사항은 MVVM 아키텍처를 매우 간략하게 설명합니다.

+0

우수 시작. DataTemplate이 필요한 이유는 무엇입니까? – user96547

+0

이것이 WPF가 ViewModel 클래스가 인스턴스화해야하는 usercontrol을 결정하는 방식이기 때문입니다. 응용 프로그램에는 많은 DataTemplate 선언이 있습니다. 주로 Resource 파일 (또는 App.xaml) –

+0

View에 대한 바인딩이 충분하다고 생각하기 때문에 혼란 스럽습니다. 내가 볼 수있는 완전한 (간단한) 샘플을 알고 있습니까? – user96547

0

는이를 관리하기보다는 스스로 일을하기 위해 기존 응용 프로그램 프레임 워크를 사용할 수 있습니다. 특히 Caliburn은이 문제를 IPresenter Component Model으로 해결합니다. 나는 다른 사람들도 거기에 있다고 확신한다.

관련 문제