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

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

但是我看不到我要在哪里实例化,什么时候显示它们,什么时候隐藏它们?

我不清楚逻辑。有人可以向我解释一个简单明了的例子吗?

谢谢
约翰

最佳答案

假设您有一个MainViewModel绑定(bind)到主屏幕,让MainViewModel成为单例类,并且其中具有'CurrentViewModel'属性(实现了INotifypropertyChanged)。现在,您可以实例化任何特定的ViewModel(基于Command/Click)并按如下所示分配实例
MainViewModel.Instance.CurrentViewModel = new SomeViewModel();
所以现在您的主屏幕XAML将具有

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

您需要为每个ViewModel( View 到ViewModel映射)定义适当的DataTemplates。看起来像
<DataTemplate DataType="{x:Type vm:SomeViewModel}">
     <view:SomeView/>
</DataTemplate>

这里的SomeView是与SomeVieModel对应的UserControl。

希望这能简要解释MVVM架构

10-07 18:45