wpf:删除GroupBox中的控件

时间:2011-03-09 10:39:15

标签: wpf groupbox removechild

我在Canvas中有一个包含不同控件的GroupBox。在运行时,我想将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 :(得分:0)

GroupBox只有一个子项 - 查看Content属性,因此您必须从中删除控件。

使用:
    ((TypeOfContainer)roomGroupBox.Content).Children.Remove(groupBoxChild);

将“TypeOfContainer”替换为组框中的面板类型(StackPanel等)