Mvvm 如何在通用Windows应用程序中使用非默认构造函数

Mvvm 如何在通用Windows应用程序中使用非默认构造函数,mvvm,inversion-of-control,win-universal-app,Mvvm,Inversion Of Control,Win Universal App,我刚刚开始尝试创建一个通用Windows应用程序,并尝试使用MVVM和依赖注入来实现它 在我的视图中,构造函数中只有一行设置ViewModel字段 public sealed partial class Login : Page { private readonly LoginViewModel ViewModel; public Login(LoginViewModel viewModel) { InitializeComponent();

我刚刚开始尝试创建一个通用Windows应用程序,并尝试使用MVVM和依赖注入来实现它

在我的视图中,构造函数中只有一行设置ViewModel字段

public sealed partial class Login : Page
{
    private readonly LoginViewModel ViewModel;

    public Login(LoginViewModel viewModel)
    {
        InitializeComponent();
        ViewModel = viewModel;
    }
}
我还需要在这个特定的视图模型中注入依赖项。理想情况下,所有这些都将通过向IoC容器(Autofac)注册来设置。然而,目前我遇到的主要障碍是UWP中的导航方式-

rootFrame.Navigate(typeof(Login));
我只指定类型,无法控制对象的实例化。有人知道我怎样才能做到这一点吗

谢谢


Zak

对于临时解决方案,您可以将LoginView模型作为
Navigate
方法的辅助参数传递,并在页面的
NavigatedTo
方法中检索它


如果您想更灵活,我建议您使用MVVM Light库。它提供服务定位器,帮助您为每个页面创建ViewModel。

谢谢。我看过很多关于MVVM Light和Prism的参考资料,只是不确定是否有其他类似于MVC中DependencyResolver的实现DI的方法。