2011-01-25 141 views
1

我以前做过这个,但我找不到我的旧代码。WPF自定义控件问题

如何在窗口内嵌入窗口。

让的说我创建了一个自定义窗体并将其保存为Window1.xaml,并希望将其嵌入Window2.xaml,没有复制和粘贴XAML代码.. TIA

编辑:我想我的问题是有点误导,我会重述它。

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

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

不知道它的内容演示,还是谷歌搜索的答案:)

回答

1

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

0

我不知道你能做到这一点 - 然而,你不应该把用户界面直接到窗口,使用正常控制(自定义或用户),并在您的Windows中重用。

+0

我认为它并不直接放置窗口,我希望它可以像一个自定义控件 – Joe 2011-01-25 08:33:03

3

您不能承载一个WPF窗口内的另一个WPF窗口,但你可以在内容从一个窗口移动到另一个:

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

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

请注意,您设置window1.Contentnull,否则你得到一个异常,因为否则内容将具有可视父项。

UPDATE 看来,所有你需要做的是在所有的Window1标签<Window></Window>之间的XAML复制到新UserControl,然后主机用户控制Window2

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); 

希望帮助!

+0

不错,但你可以使这个代码更紧一点(声明`content`是'UIElement`或`var `并且不需要`grid1`)。 – codekaizen 2011-01-25 08:39:17

0

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