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

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

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

在我的 View 中,我在构造函数中有一行设置 ViewModel 字段。

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

    public Login(LoginViewModel viewModel)
    {
        InitializeComponent();
        ViewModel = viewModel;
    }
}

我还需要将依赖项注入(inject)到这个特定的 View 模型中。理想情况下,所有这些都将通过向 IoC 容器 (Autofac) 注册来设置。然而,目前我遇到的主要绊脚石是导航在 UWP 中发生的方式 -
rootFrame.Navigate(typeof(Login));

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

谢谢

扎克

最佳答案

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

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

关于mvvm - 如何在通用 Windows 应用程序中使用非默认构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35832160/

相关文章:

java - 本质上紧耦合设计中的依赖注入(inject)和 IoC 实践

delphi - Delphi 是否有使用 [Dependency] 等属性的 DI 框架?

xaml - 应用内日历上的周 View (通用 Windows 平台/UWP)

c# - 项目创建后立即向 XAML 设计器抛出 NullReference

c# - UWP:绑定(bind)到 View 模型属性

c# - NInject:您在哪里保存对内核的引用?

c# - 如何使用 MVVM 在 wpf 中以编程方式在选项卡项中添加控件

c# - 如何在 Windows 通用应用程序中显示带有文本的进度环?

c# - 我可以从 xaml 中过滤集合吗?

c# - MVVM+ WPF PopUp 打不开