是否可以以编程方式操作WPF窗口的控件树?
我有一个包含任意WPF XAML代码的字符串。我在内容控件中显示内容。到目前为止没问题。 另外,我想装饰XAML片段中包含的每个Grid控件,让我们说一个特殊的Border。
有哪些方法可以做到这一点?
答案 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的直接父级将(?之前从未尝试过)将仅影响其子控件的模板。