J'ai besoin d'exécuter du code avant qu'un contrôle de l'utilisateur WPF soit déchargé et annuler le déchargement si certaines conditions sont remplies et maintiennent le contrôle ouvert dans son état actuel dans l'interface utilisateur ... P>
Y a-t-il quelque chose que je peux accomplir cela? Je ne pouvais rien voir comme un événement de déchargement? Merci p>
3 Réponses :
Il y a un événement non chargé sur system.windows.controls.control, mais je ne connais pas un moyen élégant d'arrêter de décharger le contrôle avec elle. P>
oui..Je connaissez l'événement non chargé mais en fonction de certaines conditions, j'ai besoin de l'arrêter d'être déchargé ...
Cela doit-il être un UserControl? Ou pouvez-vous utiliser une boîte de dialogue modale qui ne ferme pas si certaines conditions ne sont pas remplies?
Gardez une référence à la commande dans un endroit séparé dans votre code, avec un peu de métadonnées à propos de sa commande parent. Vous pouvez probablement collecter ces métadonnées en stockant une référence à la propriété Ensuite, lorsque Il y a probablement des effets secondaires pour faire attention; Selon la documentation, non chargé code> est tiré lorsque la commande est retirée de l'arborescence visuelle WPF. Autant que j'ai pu lire il n'y a pas d'événement "déchargement" car il y a, je pense, sous Windows Forms. Mais "non chargé" ne signifie pas que le contrôle est détruit, juste qu'il est retiré de l'arbre visuel. P>
parent code> dans votre
gestionnaire d'événements initialisé code>. P>
non chargé code> est appelé, appelle vos tests dans le gestionnaire d'événements code> non chargé (code> non chargé et si vos conditions sont remplies, réinsérez la commande dans l'arborescence logique. La classe
contentControl code> a une méthode protégée explicite
AddChild code>. p>
non chargé code> est appelé lorsque des thèmes sont modifiés au niveau du système d'exploitation, lorsque l'arborescence visuelle du WPF se reconstitue. p>
private void UserControl_Unloaded(object sender, RoutedEventArgs e) { if (ConditionsMet) { e.Handled = true; } } If ConditionsMet the Unloaded event will be set to true henceforth keeping your control in the VisualTree - your control does not Unload
Cela ne fonctionne pas dans mes tests. E.Handled = true; semble être ignoré.
Quel est votre cas d'utilisation pour cela? On dirait que vous voulez quelque chose qui fonctionne comme la fenêtre.Flèvement, ce qui est beaucoup différent de l'annulation d'un événement de frameworkElement.unloaded. Il peut y avoir beaucoup à se produire autour de la mise en page des parents et des frères et sœurs lorsqu'un élément est déchargé.
J'ai un problème similaire, juste au cas où vous pouvez m'aider Stackoverflow.com / Questions / 5310724 / ...