C# 如何在多窗口WPF应用程序中切换ViewModels?
我正在尝试创建一个WPF模型视图模型,该模型具有单独的LoginWindow、RegistrationWindow和MainDashboardWindow 我已经阅读了Rachel Lim关于使用ApplicationViewModel和ApplicationView(包含其他视图)导航MVVM的解决方案,但我在理解某些方面有困难 我计划通过设置LoginWindow和RegistrationWindow的DataContext来使用LoginViewModel和RegistrationViewmodel(它们都不会从BaseViewModel继承),然后在登录到应用程序后,使用MainDashboardViewModel在MainDashboardWindow上的viewmodel之间切换 这是正确的方法吗?C# 如何在多窗口WPF应用程序中切换ViewModels?,c#,wpf,mvvm,C#,Wpf,Mvvm,我正在尝试创建一个WPF模型视图模型,该模型具有单独的LoginWindow、RegistrationWindow和MainDashboardWindow 我已经阅读了Rachel Lim关于使用ApplicationViewModel和ApplicationView(包含其他视图)导航MVVM的解决方案,但我在理解某些方面有困难 我计划通过设置LoginWindow和RegistrationWindow的DataContext来使用LoginViewModel和RegistrationVie
如果这不是正确的方法,如何实现可在窗口之间切换的应用程序范围的viewmodel(一次只打开一个窗口)?要正确实现MVVM,您需要了解什么是视图、模型和viewmodel 视图是没有任何代码的UI。视图中的DataContext是ViewModel类,一个视图应该与一个ViewModel关联。您应该通过XAML代码设置DataContext 模型是包含数据的类以及为该数据处理的一些方法。我强烈建议您在为您的程序设计模型时使用存储库模式 ViewModel是您将业务方法放在其中的地方。所有ViewModel都必须从BaseViewModel实现,并且对VIEW一无所知 在您的情况下,需要创建3个不同的视图,3个视图模型用于3个视图 让我们从您的登录窗口开始。首先,您需要通过在登录视图中指明登录窗口的ViewModel来指定它
<Window x:Class="SampleApplication.LoginWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:SampleApplication.ViewModels"
Title="Login" Height="350" Width="525">
<Window.DataContext>
<local:LoginViewModel/>
</Window.DataContext>
在登录窗口中有两个按钮。一个是登录,另一个是注册。每个按钮都必须与视图中的模型绑定。通过这种方式,您可以正确地实现MVVM。要在窗口之间导航,必须关闭当前窗口并打开新窗口。要关闭窗口,要打开窗口,只需创建视图的对象并调用ViewObject.Show()代码>