【问题标题】:PRISM bootstrapper problemPRISM 引导程序问题
【发布时间】:2011-01-24 13:29:08
【问题描述】:

我正在启动一个 PRISM + MEF、WPF 应用程序。

在引导程序中我遇到了一些问题。找不到 RootVisual 属性(silverlight vs wpf?,我应该用什么代替 WPF?),我看到每个人都使用 UserControl 作为 shell

protected override void InitializeShell()
{
  base.InitializeShell();
  Application.Current.RootVisual = (Shell)this.Shell;
}

如何在 PRISM (MEF+WPF) 中将 RibbonWindow 设置为“rootvisual”(shell)?(我启动了一个 Ribbon WPF 应用程序)。 也许这不是我想要做的事情,但我没有找到任何使用 RibbonWindow 而不是 UserControl 作为 WPF 应用程序的 PRISM 中的 Shell 的示例。

我已经搜索了 stackoverflow,但它无法为我提供明确的答案。

提前致谢。

edit:确实是Window,过了一会儿才发现。 “d0h!”

【问题讨论】:

    标签: wpf mef ribbon bootstrapper prism-4


    【解决方案1】:
    Application.Current.MainWindow = (Shell)this.Shell;
    

    你可以猜到Shell一定是一个窗口。

    【讨论】:

    • "IModuleCatalog 是必需的,并且不能为空才能初始化模块。"当做 bootstrapper.Run();它给了我上面引用的这条消息。是否必须将自己的主模块添加到模块目录中?
    • 检查您的引导程序的 CreateModuleCatalog 方法。它被调用了吗?它返回什么?
    • 我使用 ...CreateFromXaml(Uri...) 并返回它(如示例中所示)。 xaml 文件未定义任何其他模块。是否应该将引导程序/shell 所在的“模块”添加到 xaml 文件中?您应该只创建一个具有 shell 和引导程序的项目并创建另一个项目以将主要功能添加到该博客,还是可以将它们放在包含引导程序/shell 的同一项目中的程序的主要功能中?
    • Shell 项目不是模块,所以它不应该在模块列表中。通常外壳项目不包含应用程序的任何功能,所以它只是一个外壳......功能应该在模块中。
    • 所以:ConfigureAggregateCatalog() 这样做。AggregateCatalog.Catalogs.Add(new AssemblyCatalog(typeof(Bootstrapper).Assembly));并且 CreateModuleCatalog() 执行 ModuleCatalog.CreateFromXaml(...) 我继续收到第一条消息(来自我的第一条评论),所以如果 modulecatalog 为空,你不能在没有任何模块的情况下启动你的 shell(主窗口)?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-08-20
    • 1970-01-01
    • 2015-12-20
    • 2015-11-24
    • 1970-01-01
    • 2011-04-03
    相关资源
    最近更新 更多