如何在WPF应用程序中创建多个shell

时间:2013-05-16 18:28:50

标签: wpf prism mef prism-4

我正在尝试创建一个包含两个shell的应用程序:

  1. 登录shell
  2. 公共shell
  3. 我成功使用PRISM和MEF同时创建两个shell,但是我怎样才能首先创建登录shell,并且在登录成功之后我需要创建公共shell?

    由于

2 个答案:

答案 0 :(得分:1)

为什么不用两个单独的模块来处理这个问题,一个叫做MainModule,有一个公共shell,另一个叫做AuthenticateModule,有loginView。为了在shellView上显示LoginView,你应该考虑加载模块的顺序和loginView的模式。最后,我想说你可以用Mef或Unity来做到这一点。

enter image description here

你的bootstraper中的

        protected override void InitializeShell()
    {

        base.InitializeShell();
        Application.Current.MainWindow.Show();}

你也应该加载你的AuthenticateModule:

   protected override void ConfigureModuleCatalog()
    {
        base.ConfigureModuleCatalog();
        ModuleCatalog moduleCatalog = (ModuleCatalog)this.ModuleCatalog;

        Type authenticationModuleType = typeof(AuthenticationModule.AuthenticationModule);
        ModuleCatalog.AddModule(new ModuleInfo(authenticationModuleType.Name, authenticationModuleType.AssemblyQualifiedName));

并在您的AuthenticationModule中:

public class AuthenticationModule : IModule
{
    ...
    public void Initialize()
    {
        LoginView _loginView = _container.Resolve<LoginView>();

        if (_loginView != null)
        {
            _loginView.Owner = Application.Current.MainWindow;
            _loginView.Show();
        }
    }

答案 1 :(得分:1)

前几天我们遇到了同样的问题,由于以下情况,我们解决了这个问题:

  1. 提示用户登录

  2. 如果成功:启动用户会话和应用程序主窗口

  3. 否则:保持登录窗口

  4. 如果用户退出,请返回登录窗口

  5. 登录位于单独的窗口中,引导程序在登录成功时运行。登录窗口将被隐藏,直到用户退出。

相关问题