2011-03-09 3 views
0

J'ai un GroupBox à l'intérieur d'un canevas contenant différents contrôles. Au moment de l'exécution, je veux changer le GroupBox à un Expander.wpf: supprimer le contrôle dans GroupBox

Non, je ne peux pas le faire en xaml. Ce serait facile!

Je reçois tous les enfants du GroupBox et je sais que je dois en détacher les enfants pour l'ajouter à un nouveau Visual.

Voici le code:

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; 

        } 
       } 

Alors que je suis en train d'obtenir des informations sur la suppression des enfants je ne peux même trouver une définition pour les enfants d'un GroupBox. Cela pourrait-il être le point?

Comment puis-je résoudre ceci/est-ce complètement autre chose?

réservoirs pour HELP!

Stef

Répondre

0

GroupBox n'a qu'un seul enfant - regardez propriété Content, donc vous devez supprimer les contrôles de celui-ci.

Utilisation:
((TypeOfContainer) roomGroupBox.Content) .Children.Remove (groupBoxChild);

Remplacer "TypeOfContainer" avec le type de panneau au sein de votre groupbox (StackPanel etc.)

+0

vous remercie pour vous répondre rapidement. J'ai ignoré mon propre stackpanel – Stef