2008-11-21 4 views
1

Можно ли программно обрабатывать дерево элементов управления WPF?Манипулирование дерева элементов WPF

У меня есть строка, которая содержит произвольный код XAML WPF. Я показываю контент в элементе управления контентом. Пока нет проблем. Кроме того, я хочу украсить каждый элемент управления сеткой, содержащийся в фрагменте XAML, скажем, специальную границу.

Каковы возможные способы сделать это?

ответ

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, вы можете добавить стиль, который изменяет внешний вид все сетки и добавляет границу, которую вы хотите вокруг нее. This is a good resource for learning how to do this. Просто имейте в виду, что если вы добавите стиль к ресурсам окна или к ресурсам приложения, это повлияет на все элементы управления в вашем окне или приложении, соответственно. Добавление его к непосредственному родительскому элементу динамического xaml (никогда не пробовал это раньше) влияет только на шаблоны его дочернего элемента управления.

Смежные вопросы