Wpf 如何将XAML/Codebehind对作为StackPanel的子项动态嵌入?
我有一个名为“MainContent”的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
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);