2011-03-09 8 views
0

私は異なるコントロールを含むCanvas内にGroupBoxを持っています。実行時に、GroupBoxをExpanderに変更したいと思います。wpf:GroupBoxでコントロールを削除する

いいえ、私はxamlでそれを行うことはできません。それは簡単だろう!

私はGroupBoxのすべての子を取得し、それを新しいビジュアルに追加するために子をデタッチする必要があることを知っています。ここで

はコードです:

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; 

        } 
       } 

私は、私もグループボックスの子供のための定義を見つけることができない子どもの削除についての情報を取得しようとしている間。それはポイントかもしれない?

どのように私はこれを解決することができます/全く別の方法ですか?

HELP用タンク!

ステフ

答えて

0

GroupBoxのは一つだけの子供を持っている - あなたはそれからコントロールを削除する必要がありますので、Contentプロパティを見てください。

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

はあなたの迅速な答えを

+0

おかげであなたのグループボックス内のパネルの種類(のStackPanelなど)であなたを「TypeOfContainer」を交換してください。私は本当に自分のスタックパネルを無視した – Stef