在WPF / Surface应用程序中托管WPF / Surface应用程序

时间:2011-01-20 17:18:19

标签: c# wpf hosting pixelsense

我正在尝试创建一个父WPF /表面应用程序,它将托管多个WPF /表面应用程序。我正在寻找一些如何实现这种功能的指针。正在阅读http://msdn.microsoft.com/en-us/library/ms742522.aspx,但它讨论了在WPF中托管Win32内容,反之亦然。

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

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

此外,因为有一种方法可以确保主窗口的进程内存不会被启动的子进程占用。

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

3 个答案:

答案 0 :(得分:0)

我首先考虑使用Microsoft Prism,特别是Modularity命名空间。

答案 1 :(得分:0)

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

我想您仍然可以使用名为“主机”的视图来呈现不同的应用程序。

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

这实际上取决于“托管”的含义。主窗口是否需要以某种方式处理和/或与其他应用程序交互,或者它只是其他应用程序的启动板?

答案 2 :(得分:0)

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

我遵循的步骤:

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