Wpf 将内容附加到窗口的根元素

Wpf 将内容附加到窗口的根元素,wpf,Wpf,我知道,已经晚了很多年,但对WPF来说是个新手 我正在尝试将新元素附加到另一个windows内容,而不覆盖它 例如,我想添加一个符合Window1实际宽度/实际高度的边框,我可以使用Window1.Content=新边框内容 但是我想附加到Window1内容而不覆盖它 假设Window1: .... <Grid> This is Window1 content root that possesses many children </Grid> ... 所以我对V

我知道,已经晚了很多年,但对WPF来说是个新手

我正在尝试将新元素附加到另一个windows内容,而不覆盖它

例如,我想添加一个符合Window1实际宽度/实际高度的边框,我可以使用
Window1.Content=新边框内容

但是我想附加到Window1内容而不覆盖它

假设Window1:

....
 <Grid>
  This is Window1 content root that possesses many children
 </Grid>
...
所以我对VisualTree遍历做了一些研究,但是似乎没有一种文档化的方法将元素添加到所有者的根元素中,除非您知道它的类型

这里的问题是,向这些元素添加子元素是依赖的方法。例如,将子项添加到StackPanel与将新行添加到网格然后将子项添加到该行不同

是否有一种方法可以附加到内容并模拟“固定”定位元素,例如边框。

一句话,“否”。这不是WPF的工作原理。大多数WPF控件最终都是ContentControl的子类,它只支持一个内容对象:

    public object Content { get; set; }
这就是为什么如果您尝试执行以下操作,会出现错误:

<Window x:Class="MyWpApp.MainWindow" ... etc...>

    <TextBlock Text="Hello World!" />
    <TextBlock Text="Goodbye World!" />

</Window>
(this.Content as Panel).AddChild(newChildControl);
这是Grid、StackPanel等子类的基类。因此,如果您知道某个窗口已将其设置为唯一的子内容,则可以执行以下操作:

<Window x:Class="MyWpApp.MainWindow" ... etc...>

    <TextBlock Text="Hello World!" />
    <TextBlock Text="Goodbye World!" />

</Window>
(this.Content as Panel).AddChild(newChildControl);
这可能是最接近您所要查找的内容,但显然,您需要确保您已经实际设置了一个面板作为开始的内容