【问题标题】:WPF Prism User ObjectWPF 棱镜用户对象
【发布时间】:2014-12-28 15:19:01
【问题描述】:

我是 WPF 和 MVVM Prism 的新手。我作为 ASP.NET 开发人员已经 5 年多了,最近切换到 WPF 项目。

我目前正在使用带有 Unity 的 Prism 5.0。遵循该模式的主要目的是实现模块化和松耦合。

我的问题是:我想让我的用户对象在所有模块中通用且可访问。

这是我到目前为止所做的。启动时,用户会在登录项目中看到登录屏幕 (LoginView.xaml)。然后 LoginViewModel 将验证凭据。验证成功后,LoginViewModel 会将检索到的对象传递给 Infrastructure 项目中的静态类。由于用户登录只是单个/通用实例,我在基础设施项目下创建了一个静态类来保存用户对象。

我尝试过 GenericPrincipal,虽然它确实可以跨视图保存数据,但它还不够复杂,无法保存我需要的数据。因此我选择了静态类。

有没有人有更好的建议?

【问题讨论】:

    标签: c# wpf mvvm persistence prism


    【解决方案1】:

    建议您在 Unity 容器本身中注册 User 实例,而不是在静态类中注册您的 User 对象。

    在您的 LoginViewModel 中,您应该获得 IUnityContainer 类的实例。

    public LoginViewModel(IUnityContainer container)
    {
        Container = container;
    }
    

    在你的登录方法中,你注册你的用户对象:

    private void Login(object obj)
    {
        ...
        if (user.Authenticated)
        {
            Container.RegisterInstance("CurrentUser", user); 
        }
        ...
    }
    

    要访问您的对象,请使用以下代码 sn-p:

    Container.Resolve<YourUserClassHere>("CurrentUser");
    

    更多详情见: Persisting user credentials in WPF w/Unity and MVVM

    【讨论】:

      猜你喜欢
      • 2011-02-15
      • 2018-11-10
      • 2011-04-02
      • 1970-01-01
      • 2012-03-12
      • 2013-12-27
      • 2011-09-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多