我有一个名为“MainContent”的StackPanel。
我可以用这样的UIElements动态填充它:
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对(例如Page或Window)填充它:
Type type = this.GetType();
Assembly assembly = type.Assembly;
Window window = (Window)assembly.CreateInstance(String.Format("{0}.{1}", type.Namespace, "Test1"));
MainContent.Children.Add(window);
但是上面的代码抱怨我无法添加“Window to a Visual”。我当然可以做window.ShowDialog()然后它在我的主窗口的外部。 我希望Test1窗口在我的应用程序中嵌入。
我该怎么做?
已添加:主要问题是:如何让Window(或Page)充当UIElement,以便我可以在StackPanels等中动态嵌入它们。目前正在查看 XamlLoader < / strong>,有经验的人吗?
答案 0 :(得分:1)
我不知道是否可能。但是,为什么不用窗口的根元素填充窗口,而不是用窗口填充面板。您将获得窗口的所有内容和值,而不需要不必要的镶边。
更新:您可以通过依赖属性Content
Window w;
object rootElement = w.Content;
答案 1 :(得分:1)
最简单的方法是让你的XAML /代码从UserControl继承 - 然后一切都会正常工作
答案 2 :(得分:0)
你试过这个吗?
MainContent.Children.Add(window.Content);