WPF自定义控件问题

时间:2011-01-25 08:26:06

标签: wpf wpf-controls

我以前做过这个,但我找不到我的旧代码。

如何在窗口中嵌入窗口。

假设我创建了一个自定义表单并将其保存为Window1.xaml,并希望将其嵌入到Window2.xaml中,而无需复制并粘贴xaml代码.. TIA

编辑:我认为我的问题有些误导,我会改写它。

我有这个Window1.xaml我添加了自定义标题和背景图像/颜色。

然后在Window2.xaml中,我希望Window1成为自定义控件并将其嵌入此处。

不确定其内容演示者是否仍在谷歌上搜索答案:)

5 个答案:

答案 0 :(得分:3)

您无法在另一个WPF窗口中托管WPF窗口,但您可以将内容从一个窗口移动到另一个窗口:

var window1 = new Window1();
var window2 = new Window2();

var content = window1.Content;
window1.Content = null;
window2.Content = content;

请注意,您将window1.Content设置为null,否则您会收到异常,因为否则内容将具有可视父级。

<强>更新 您需要做的就是将<Window></Window>中的Window1标记之间的所有XAML复制到新的UserControl中,然后在Window2中托管该用户控件。

答案 1 :(得分:1)

我相信在这种情况下你应该使用Pages或usercontrols。这样,您可以导航到应用程序中定义的其他部分/页面/控件。 CodeKaizen是对的,你不能在另一个窗口内托管一个窗口

答案 2 :(得分:0)

我不确定你能做到这一点 - 但是,你不应该将用户界面直接放到窗口中,而是使用普通控件(自定义或用户),并在窗口中重复使用。

答案 3 :(得分:0)

我知道你可以在

背后的代码中做到这一点
//Window you want to show
Window1 child = new Window1(); 

object content = child.Content;
child.Content = null;

//Where to show
this.grid1.Children.Clear();    
this.grid1.Children.Add((UIElement)content);
希望有所帮助!

答案 4 :(得分:0)

听起来你真的想要一个UserControl。将Window1的类型从Window更改为UserControl,然后将该UserControl放入Window2。