操纵WPF元素树

操纵WPF元素树,wpf,Wpf,是否可以通过编程方式操纵WPF窗口的控件树 我有一个包含任意WPF XAML代码的字符串。我在内容控件中显示内容。到目前为止没有问题。 另外,我想用一个特殊的边框来装饰XAML代码片段中包含的每个网格控件 执行此操作的可能方法有哪些?您可以遍历控件树,如果当前控件的类型为Grid,则向其添加边框 下面是一些伪代码,它们看起来非常像C,实际上可能会编译并工作: private void AddGrid(Control c){ foreach(var child in c.Children)

是否可以通过编程方式操纵WPF窗口的控件树

我有一个包含任意WPF XAML代码的字符串。我在内容控件中显示内容。到目前为止没有问题。 另外,我想用一个特殊的边框来装饰XAML代码片段中包含的每个网格控件


执行此操作的可能方法有哪些?

您可以遍历控件树,如果当前控件的类型为Grid,则向其添加边框

下面是一些伪代码,它们看起来非常像C,实际上可能会编译并工作:

private void AddGrid(Control c){
    foreach(var child in c.Children)
        AddGrid(child);
    if(this is Grid)
        this.Border = new Border(/* whatever */);
}
或者,在包含动态xaml的控件的资源中,您可以添加一个样式来更改所有网格的外观,并在其周围添加所需的边框。请记住,如果将样式添加到窗口的资源或应用程序的资源中,将分别影响窗口或应用程序中的所有控件。将其添加到动态xaml的直接父级会怎么样?以前从未尝试过此操作,仅影响其子控件的模板