wpf – 使用MVVM管理复杂的UI

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

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

但是,当我展示它们并隐藏它们时,我看不到我想要实例化的地方.

这个逻辑对我来说并不清楚.有人可以解释我或指出一个简单明了的例子吗?

谢谢
约翰

最佳答案 想象一下,你有一个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架构

点赞