我正在开发一堆用户控件来做不同的事情——比如维护屏幕、查询屏幕、报告屏幕之类的东西。每个屏幕都有一个专门的用途,一个用户控件拥有一个屏幕的所有功能。
我正在使用 avalondock,可以将这些用户控件放入 LayoutDocuments。这将为每个屏幕/用户控件创建一个单独的选项卡。我有一个菜单系统设置,因此用户可以选择他们需要访问的屏幕。对于每个新屏幕,我都会创建一个新的 LayoutDocument,向其中添加适当的控件,然后将 LayoutDocument 添加到停靠面板的子项中。
这一切都很好。
Avalon Dock 还具有能够拖出布局文档并使其浮动的功能 - 如果您愿意,也可以将其停靠在应用程序的其他位置。
我想把这个概念更进一步:能够说右键单击布局文档并选择“制作外部窗口”(稍后我会制定出确切的措辞)。此操作的效果是在任务栏中创建一个具有自己图标的新应用程序;能够在它和其他应用程序之间切换;
有点像当你说 Excel 编辑一个文档,然后你打开了第二个 excel 实例。在 Windows 7 中,您会在任务栏中获得两个 excel 图标(一个在另一个之后),您可以在它们之间使用 alt-tab。
这几乎是我所追求的行为。然而,第二个应用程序并不是第一个应用程序的完整副本。它只有一个用户选择的用户控件。
这是我卡住的地方,需要一些指导。
我在想我可能需要某种 shell 应用程序,我可以在其中传递我想要的用户控件。shell 将充当带有标题、X、最小化等的窗口;用户控件将成为该外壳的唯一内容。使用 process.start 创建新进程并启动?
理想情况下,我能够以与用户当前正在查看的相同状态传递相同的控件-因此,例如,如果他们在维护屏幕中编辑某些客户记录的一部分,则选择“外部窗口”选项,相同的客户记录将出现在新窗口中。
如果我走在正确的轨道上,有没有人做过类似的事情或提供建议?
我想我知道如何创建一个 shell 应用程序,但不确定是否将用户控件动态传递给它。我想避免为每个用户控件创建不同的 shell 应用程序。