【问题标题】:How do I create multiple shells in WPF application如何在 WPF 应用程序中创建多个 shell
【发布时间】:2013-05-16 18:28:50
【问题描述】:

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

  1. 登录外壳
  2. 公共外壳

我成功使用PRISM和MEF同时创建了两个shell,但是如何先制作登录shell,登录成功后我需要创建公共shell?

谢谢

【问题讨论】:

  • 看起来您需要 2 个模块 - 登录和公共。这些将驻留在您的外壳中。不要过度复杂化。

标签: wpf prism mef prism-4


【解决方案1】:

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

在您的引导程序中:

        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();
        }
    }

【讨论】:

  • 感谢您的回复,能否提供一个示例?
  • 对不起,我没有注意到你的评论我有一个例子,如果它仍然有用,请告诉我如何发送给你?
【解决方案2】:

几天前我们遇到了同样的问题,我们妥协解决了,因为以下情况:

  1. 提示用户登录

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

  3. 其他:留在登录窗口

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

登录在一个单独的窗口中,并且引导程序在登录成功时运行。登录窗口是隐藏的,直到用户退出。

【讨论】:

  • 感谢您的回复,能否提供一个示例?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-05
  • 2013-08-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多