Supprimer des éléments de stackpanel
J'ai un bouton, lorsqu'il est pressé, il ajoute un contrôle textbox et un contrôle listbox à un stackpanel et ajoute ce stackpanel à l'autre stackpanel nommé "stackPanelAdd". Juste comme ça:
private void buttonAdd_Click(object sender, RoutedEventArgs e)
{
StackPanel sp = new StackPanel();
TextBox tb = new TextBox();
ListBox lb = new ListBox();
tb.Margin = new Thickness(5, 5, 5, 0);
lb.Margin = new Thickness(5, 5, 5, 0);
lb.Height = 200;
sp.Children.Add(tb);
sp.Children.Add(lb);
stackPanelAdd.Children.Add(sp);
}
Comment puis-je supprimer le dernier des enfants dans le stackpanel "stackPanelAdd"?
Dois-je utiliser quelque chose comme stackPanelAdd.les enfants.Enlever? si oui, alors comment puis-je obtenir le dernier élément dans le stackpanel?
OriginalL'auteur Phu Minh Pham | 2012-02-21
Vous devez vous connecter pour publier un commentaire.
Essayer:
OriginalL'auteur Milan Halada
Qui n'est pas une bonne idée, si vous vous en tenez à cette méthode, les choses seront probablement très salissant, tôt ou tard. Lorsque vous traitez avec des éléments qui peuvent être ajoutés et supprimés en WPF, vous souhaitez utiliser un
ItemsControl
de quelque sorte sur le dessus des panneaux (vous pouvez changer le panneau à l'aide de laItemsPanel
de la propriété, par défaut il sera unStackPanel
).La création des contrôles peut également être améliorée par l'utilisation de les modèles de données et la liaison de données qui sont des mécanismes de base que vous devriez vous familiariser avec.
Un exemple:
Ici
Data
est une source de collecte qui devrait mettre en oeuvreINotifyCollectionChanged
, alors vous pouvez simplement supprimer un élément de la collection et de ses correspondants StackPanel aura disparu. Les éléments deData
doit contenir les propriétés liéesName
etItems
vous pouvez ensuite affecter des valeurs à des, ou entrer du texte à partir de (la classe doit implémenterINPC
, en savoir plus sur ces choses dans le article sur la liaison de données).OriginalL'auteur H.B.
Vous pouvez utiliser
comme je l'avais mentionné, vous aurez à l'importation et à l'utilisation du Système.Linq
Vous souhaitez LastOrDefault() ou vous pouvez obtenir une exception
Merci @Phil . Mis à jour.
OriginalL'auteur Maheep
@Milan Halada réponse a fonctionné pour moi avec un peu de changement,
donc, il supprime tous les enfants, puis-je ajouter de nouveaux enfants de de façon dynamique à l'aide de la boucle, avec de nouvelles données.
OriginalL'auteur Sabeen