У меня есть GroupBox внутри 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. Может быть, дело в этом?
Как я могу решить эту проблему / есть ли другой способ?
танки на ПОМОЩЬ!
Стеф