使用MVVM管理复杂的UI

时间:2009-11-17 21:16:46

标签: wpf mvvm

我的问题实际上是关于使用MVVM启动应用程序:

我的主屏幕将托管多个屏幕。我知道他们将是UserControls。

但我没有看到我在何时想要实例化,当我展示它们时以及何时隐藏它们?

逻辑对我来说并不清楚。有人可以解释一下,还是给我一个简单明了的例子?

由于 约翰

2 个答案:

答案 0 :(得分:2)

想象一下,你有一个MainViewModel绑定到主屏幕。让MainViewModel成为一个单例类,它有一个'CurrentViewModel'属性(实现了INotifypropertyChanged)。现在,您可以实例化任何特定的ViewModel(基于命令/单击)并按如下方式分配实例

MainViewModel.Instance.CurrentViewModel = new SomeViewModel();

所以现在你的主屏幕XAML将有

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

您需要为每个ViewModel(View to ViewModel Mapping)定义正确的DataTemplates。这看起来像

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

这里SomeView是UserControl对应于SomeVieModel。

希望这能非常简单地解释MVVM架构

答案 1 :(得分:0)

您可以使用现有的应用程序框架来帮助管理它,而不是自己动手。 Caliburn特别针对IPresenter Component Model解决了这个问题。我确信那里也有其他人。

相关问题