Bonjour à tous,
voici mon problème :
- J'ai une application WPF, dans celles-ci je génère des éléments (UIElement) à partir d'une classe externe.
- j'ai un stackpanel (layoutroot) sur ma page windows.xaml que je peuple au démarrage de l'application grâce à une méthode de la classe externe (qui va renvoyer les UIElements).
- Chaque UIElement (ici un canvas) contient d'autres éléments (checkbox, texte, bouton).
le problème : à partir d'un UIElement (le bouton), je souhaite faire disparaitre complètement l'élément ou le bouton a été cliqué.
Normalement quand on travaille directement dans le fichier windows.xaml.cs c'est facile il suffirait de faire un remove dans les children du layoutroot mais comme je travaille avec une classe externe, je n'y ai pas accès quand je clique sur le bouton de l'UIElement, ou alors je ne sais pas comment faire.
Le problème est donc : comment faire comprendre au layoutroot que je veux supprimer un élément ?
Il faut surement faire un delegate ou un événement, mais je ne manipule pas encore très bien ces choses-là.
le code de window.xaml.cs :
La méthode de la classe externe pour créer l'élément :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 void Window1_Loaded(object sender, RoutedEventArgs e) { <div style="margin-left:40px">HostsHelper hh = new HostsHelper(); foreach (UIElement item in hh.GetUIHosts())</div>{ <div style="margin-left:40px">LayoutRoot.Children.Add(item);</div>} }
Merci d'avance.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 protected UIElement DrawInfos(HostInfos host) { <div style="margin-left:40px">...(les autres éléments) Button btnDelete = new Button(); btnDelete.Style = (Style)Application.Current.Resources["DeleteInfos"]; btnDelete.Click += new RoutedEventHandler(delegate(object sender, RoutedEventArgs e) <div style="margin-left:40px">{ ??? <- Comment je peux faire comprendre au layoutroot qu'il doit supprimer un élément ou rebinder s'il clic sur le bouton? });</div></div>}
Partager