如何在 Universal Windows Apps 中使用非默认构造函数

How to use a non-default constructor in Universal Windows Apps

我刚刚开始尝试创建通用 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));

我只是指定类型,无法控制对象的实例化。有人知道我怎样才能做到这一点吗?

谢谢

扎克

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

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