我的问题实际上是关于使用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架构