【问题标题】:Hosting WPF/Surface application within WPF/Surface application在 WPF/Surface 应用程序中托管 WPF/Surface 应用程序
【发布时间】:2011-01-20 17:18:18
【问题描述】:

我正在尝试创建一个父 WPF/surface 应用程序,它将托管多个 WPF/surface 应用程序。我正在寻找一些有关如何实现此类功能的指示。正在阅读http://msdn.microsoft.com/en-us/library/ms742522.aspx,但它谈到了在 WPF 中托管 Win32 内容,反之亦然。

我的想法是有一些类似于 MDI 表单的东西,你有一个主表单,你可以实例化多个子表单。

在我的情况下,这些将是不同的应用程序,它们将使用配置文件启动并加载到主应用程序中。

另外,既然有办法确保主窗口的进程内存不被启动的子进程占用。

编辑: 宿主应用程序将根据用户的选择启动不同的应用程序。可以说它就像一个基于 WPF/Surface touch SDK 构建的应用程序启动器。现在,一旦应用程序启动,启动器就会进入后台(除了显示小按钮以便稍后再次将其向前),当用户结束当前应用程序启动器时,它会再次回到前台。我认为唯一必要的交互是知道已启动的应用程序已终止或在有限的屏幕区域中调用应用程序。如果有人看过 Microsoft Surface 应用程序启动器,即使应用程序已启动,也有角落按钮可将应用程序启动器带到前台。

【问题讨论】:

  • 复制表面外壳的功能涉及很多东西。您能否更具体地说明您在哪些方面寻求帮助?
  • 就像我提到的,主要目的是在每个表面应用程序的顶部有一个小按钮,以来回切换到应用程序启动器。因此,目标是将表面应用程序作为进程启动,然后在它们关闭时跟踪它们。

标签: c# wpf hosting pixelsense


【解决方案1】:

我会先看看使用 Microsoft Prism,特别是 Modularity 命名空间。

【讨论】:

    【解决方案2】:

    除了“不同的应用程序”部分,听起来像是 MVVM 的经典案例。这些“不同的应用程序”实际上是独立的应用程序,还是只是同一个应用程序中的不同项目?这可能会简化演示文稿的选择。

    我想您仍然可以有一个名为“Host”的视图来呈现不同的应用程序。

    当然,WPF 没有 MDI 的概念,但是你可以打开多个非模态窗口。

    这真的取决于您所说的“托管”是什么意思。主窗口是否需要以某种方式处理和/或与其他应用程序交互,还是只是其他应用程序的启动板?

    【讨论】:

    • 我在我的想法中添加了更多细节。尝试有一个可以与应用程序交互的启动器。
    【解决方案3】:

    我按照这种方法来解决这个问题。启动器本身并没有托管应用程序,而是会启动一个新应用程序并隐藏自己。

    我遵循的步骤:

    1. 主启动器应用程序将在 Kiosk 模式下运行,即始终在顶部/没有通过捕获关闭事件来关闭的选项/任务栏中没有显示实例/没有标题栏/杀死 explorer.exe/隐藏任务栏。
    2. 启动器填充一个水平列表框(为 UI 模板化的数据),它可以占据屏幕的主要中心区域,并且可以通过任一方式滚动。
    3. 当用户选择列表框上的项目时,单击/点击事件会启动一个单独的进程,其中启动器窗口的可见性设置为隐藏和一个小按钮(基本上是一个内部只有一个按钮且大小设置为按钮的高度/宽度的窗口)在屏幕的任一角上创建并始终位于顶部选项。
    4. 按钮的功能是最小化当前工作的应用程序并将启动器的可见性设置回可见并将焦点设置到此窗口。
    5. 由于进程是由启动器启动的,我捕获了启动窗口的关闭事件以知道用户结束了应用程序,然后再次弹出启动器。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-03-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多