我的问题实际上是关于使用MVVM启动应用程序:
我的主屏幕将托管多个屏幕。我知道他们将是UserControls。
但我没有看到我在何时想要实例化,当我展示它们时以及何时隐藏它们?
逻辑对我来说并不清楚。有人可以解释一下,还是给我一个简单明了的例子?
由于 约翰
答案 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解决了这个问题。我确信那里也有其他人。