WPF解决方法将Window控件添加为可视化的子项

时间:2015-06-09 18:05:02

标签: c# wpf user-interface

我需要在面板中添加一个Window控件。

当然这似乎不可能: 窗口必须是树的根。无法将Window添加为Visual的子项。

问题归结为使用用户配置的操作系统主题在面板内绘制Window Chrome(控制框,标题栏,最小化/恢复/关闭按钮和边框)。我应该调查一下吗?

2 个答案:

答案 0 :(得分:1)

这就是用户控件的用途 - 创建可在多个窗口中重用的控件。重构你的Window Control,使它只是一个包含单个User Control的Window(它包含你之前窗口的所有内容)。将用户控件放在面板中。想法是你当前的窗口(你想成为一个孩子,我们称之为Window 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的界面,你有几个选择 - 使用标签控件,使用可以拖动和/或调整大小的面板等。在这种情况下,你会仍然想要一个用户控件,以便它可以轻松地在您创建的不同窗口(或面板)中重用,特别是如果您最终必须以编程方式创建这些面板(例如,如果您打算在动态创建多个实例)运行时)。

在这种情况下,您可能需要两个用户控件:一个包含来自其他窗口的所有控件,另一个用作"窗口&#34 ;在主窗口内控制。 " Window"控件具有调整大小,对接等功能。

WPF不支持创建一个窗口,就像它是一个控件一样,或者作为另一个窗口的子窗口(你可以得到的最近的窗口是一个窗口显示为模态对话框)。

答案 1 :(得分:-4)

由于唯一的答案完全偏离主题,这是我能提出的最佳答案: 创建窗口,将窗口渲染为Bitmap,将位图放在面板中。