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

时间:2016-03-06 20:31:24

标签: mvvm inversion-of-control win-universal-app

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

使用我的View,我在构造函数中有一行设置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));

我只是指定了类型,并且无法控制对象的实例化。有谁知道我怎么能做到这一点?

由于

扎克

1 个答案:

答案 0 :(得分:1)

对于临时解法,您可以将LoginViewModel作为Navigate方法的辅助参数传递,并在页面的NavigatedTo方法中重新获取。

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