我在包含不同控件的 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 的孩子的定义。这可能是重点吗?
我该如何解决这个问题/是否有其他方法?
坦克帮助!
史蒂夫