【问题标题】:How to host DryIoc based Prism WPF application inside windows forms?如何在 Windows 窗体中托管基于 DryIoc 的 Prism WPF 应用程序?
【发布时间】:2019-04-19 11:01:32
【问题描述】:

我已经使用 DryIoc 容器开发了一个基于 Prism 的 WPF 应用程序,现在我想将它托管在 Windows 窗体应用程序中,但我不知道如何使用元素主机将此应用程序托管在 Windows 窗体中。

DryIoc 引导程序类是在“Prism.DryIoc.Wpf”中定义的,所以我在我的 winforms 应用程序中添加了引用,但这种方法的问题是,当我尝试覆盖“CreateShell”方法时,它返回 DependencyObject,我可以'不要在winforms上下文中使用,

受保护的虚拟 System.Windows.DependencyObject CreateShell();

关于如何让它工作的任何指示?提前致谢。

【问题讨论】:

  • Prism 适用于 WPF,正如您已经注意到的,如果您想要 WinForms,请使用不同的框架。或者构建两个不同的应用程序并使用 pinvoke 将一个嵌入到另一个中......
  • 感谢您的回复,看来可以。我能够让它发挥作用,我仍在测试我的方法,我会在一天内与其他人分享我的答案。

标签: wpf prism dryioc


【解决方案1】:

这是让引导程序工作的方法。使用 pragma 来抑制已弃用的警告。希望这会有所帮助。

命名空间 XXX {

编译指示警告禁用 0618

public class xxxBootstrapper : DryIocBootstrapper
{
    MainControl mainControl;
    public xxxBootstrapper ()
    {
        base.ConfigureViewModelLocator();
    }
    protected override DependencyObject CreateShell()
    {
        mainControl = new MainControl();
        return mainControl;
    }


    protected override void ConfigureModuleCatalog()
    {
        //Load modules..

        base.ConfigureModuleCatalog();
    }

    public UIElement GetMainControl()
    {
        return (UIElement)mainControl;
    }
}

编译指示警告恢复 0618

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-18
    • 2021-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多