我需要在面板内添加Window控件。
当然,这似乎是不可能的:
窗口必须是树的根。无法将Window添加为Visual的子级。
问题归结为使用用户配置的OS主题在面板内部绘制Window Chrome(控制框,标题栏,最小化/还原/关闭按钮和边框)。我应该研究任何解决方法吗?
最佳答案
这就是用户控件的用途-创建可以在多个窗口中重复使用的控件。重构您的窗口控件,以便它只是一个包含单个用户控件的窗口(而该用户控件又包含您窗口以前拥有的所有内容)。将用户控件放在面板中。这个想法是您当前的窗口(您想成为一个孩子,我们将其称为窗口B)看起来像这样:Window B -> Grid/Panel -> Other Controls
而应该看起来像这样Window B -> Grid/Panel -> User Control B -> Grid/Panel -> Other Controls
现在其他窗口如下所示:Window A -> Grid/Panel -> ... -> Panel -> User Control B
如果您要实现类似于MDI的界面,则可以使用一些选项-使用选项卡控件,使用可以拖动和/或调整大小的面板等。在这种情况下,您仍然需要用户控件,以便它可以轻松地在您创建的不同窗口(或面板)中重复使用,尤其是当您最终不得不以编程方式创建这些面板时(例如,如果您打算在运行时动态创建多个实例)。
在这种情况下,您可能需要两个用户控件:一个具有来自其他窗口的所有控件,另一个将充当主窗口中的“窗口”控件。 “窗口”控件将具有调整大小,停靠等功能。
WPF不支持将窗口作为控件或作为另一个窗口的子窗口来创建(与之最接近的是将窗口显示为模式对话框)。
关于c# - WPF解决方法,将Window控件添加为可视控件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30739562/