操作WPF元素树

时间:2008-11-21 14:32:10

标签: wpf

是否可以以编程方式操作WPF窗口的控件树?

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

有哪些方法可以做到这一点?

1 个答案:

答案 0 :(得分:0)

您可以走控制树,如果当前控件的类型为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的控件的Resources中,您可以添加Style来改变所有Grids的外观,并添加您想要的边框。 This is a good resource for learning how to do this.请记住,如果将样式添加到窗口的资源或应用程序的资源,它将分别影响窗口或应用程序中的所有控件。将它添加到动态xaml的直接父级将(?之前从未尝试过)将仅影响其子控件的模板。