Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wpf 如何将XAML/Codebehind对作为StackPanel的子项动态嵌入?_Wpf - Fatal编程技术网

Wpf 如何将XAML/Codebehind对作为StackPanel的子项动态嵌入?

Wpf 如何将XAML/Codebehind对作为StackPanel的子项动态嵌入?,wpf,Wpf,我有一个名为“MainContent”的StackPanel 我可以动态地用以下元素填充它: TextBlock textBlock = new TextBlock(); textBlock.Text = String.Format("This is text"); textBlock.Background = new SolidColorBrush(Colors.Beige); MainContent.Children.Add(textBlock); Button button = new

我有一个名为“MainContent”的StackPanel

我可以动态地用以下元素填充它:

TextBlock textBlock = new TextBlock();
textBlock.Text = String.Format("This is text");
textBlock.Background = new SolidColorBrush(Colors.Beige);
MainContent.Children.Add(textBlock);

Button button = new Button();
button.Content = "This is a button";
MainContent.Children.Add(button);
但我想超越这一点,用XAML/Codebehind对填充它(例如页面或窗口):

但是上面的代码抱怨我不能添加“视觉窗口”。当然,我可以做window.ShowDialog(),但它在我的主窗口之外。 我希望Test1窗口嵌入到我的应用程序中

我该怎么做


添加:主要问题是:如何让窗口(或页面)充当UIElement,以便动态地将它们嵌入StackPanels等。目前正在查看XamlLoader,有经验的人吗?

我不知道这是否可行。但是,与其用窗口填充面板,不如用窗口的根元素填充它。您将获得窗口的所有内容和价值,而无需使用不必要的chrome

更新:您可以通过Dependency属性
Content

    Window w;
    object rootElement = w.Content;
你试过这个吗

MainContent.Children.Add(window.Content);

最简单的方法是让您的XAML/代码从UserControl继承-然后一切都会正常工作

听起来不错,如何动态获取“窗口的根元素”,例如window.LayoutRoot、window.RootElement、window.Children[0]。。。语法是什么?MainContent.Children.Add((UIElement)rootElement)进行编译,但收到运行时错误。这就是问题所在,我如何将窗口强制转换为UIElement?好主意,但不幸的是intellisense没有显示窗口的“子项”,该窗口应为Windows。内容谢谢,我更新了代码。不过,你明白我的意思了。行吗?但是MainContent.Children.Add()需要一个UIElement和窗口。Child不是UIElement。我可以这样强制转换它,它可以编译,但会出现rutime错误。我怎样才能让window成功地充当UIElement?宾果,这正是我想要做的,非常简单,谢谢!
MainContent.Children.Add(window.Content);