wpf: удалить элемент управления в GroupBox - PullRequest
0 голосов
/ 09 марта 2011

У меня есть групповой блок внутри Canvas, содержащий различные элементы управления.Во время выполнения я хочу изменить GroupBox на Expander.

Нет, я не могу сделать это в xaml.Это было бы просто!

Я получил все дочерние элементы GroupBox и знаю, что должен отсоединить от него дочерние элементы, чтобы добавить его в новый Visual.

Вот код:

 for (int i= 0; i < VisualTreeHelper.GetChildrenCount(Canvas2DHandler); i++)
                 {
                     DependencyObject child = VisualTreeHelper.GetChild(Canvas2DHandler, i);

                     if (child != null && typeof(GroupBox) == child.GetType() )
                     {
                         GroupBox roomGroupBox = (GroupBox)child;
                         Expander roomExpander = new Expander();
                         StackPanel sPForExpander = new StackPanel();
                         roomExpander.Header = roomGroupBox.Header;
                         for (int n=0; n < VisualTreeHelper.GetChildrenCount(child); n++)
                         {
                             UIElement groupBoxChild = VisualTreeHelper.GetChild(child, n) as UIElement;
                             //remove control from groupBox (HOWTO???)

                             sPForExpander.Children.Add(groupBoxChild);
                         }
                         roomExpander.Content = sPForExpander;

                     }
                 }

Пока я пытаюсь получить информацию об удалении дочерних элементов, я даже не могу найти определение для дочерних элементов GroupBox.Может быть в этом смысл?

Как я могу решить эту проблему / есть ли совершенно другой способ?

танки для ПОМОЩИ!

Стеф

1 Ответ

0 голосов
/ 09 марта 2011

GroupBox имеет только один дочерний элемент - посмотрите на свойство Content, так что вы должны удалить из него элементы управления.

Использование:
((TypeOfContainer) roomGroupBox.Content) .Children.Remove (groupBoxChild);

Замените "TypeOfContainer" на тип панели внутри вашей группы (StackPanel и т. Д.)

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