Управление деревом элементов WPF - PullRequest
1 голос
/ 21 ноября 2008

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

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

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

1 Ответ

0 голосов
/ 21 ноября 2008

Вы можете пройти по дереву элементов управления и, если текущий элемент управления имеет тип Grid, добавить к нему свою границу.

Вот некоторый псевдокод, который выглядит шокирующе, как C #, и может фактически скомпилироваться и работать:

private void AddGrid(Control c){
    foreach(var child in c.Children)
        AddGrid(child);
    if(this is Grid)
        this.Border = new Border(/* whatever */);
}

В качестве альтернативы, в Resources элемента управления, содержащего ваш динамический xaml, вы можете добавить Style, который изменяет внешний вид всех Grids и добавляет желаемую границу вокруг него. Это хороший ресурс для изучения того, как это сделать. Просто имейте в виду, что если вы добавите стиль к ресурсам окна или ресурсам приложения, это повлияет на все элементы управления в вашем окне или приложении, соответственно. Добавление его к непосредственному родителю динамического xaml (никогда раньше не пробовало) повлияет только на шаблоны его дочернего элемента управления.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...