Comment déclencher l'événement Unload de Usercontrol dans une fenêtre WPF
J'ai un UserControl dans WPF:
<UserControl x:Class="XLogin.DBLogin"
x:Name="DBLoginUserFrame"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d"
Height="263"
Width="353"
Loaded="DBLoginUserFrame_Loaded"
Unloaded="DBLoginUserFrame_Unloaded">
<Grid>
<GroupBox Header="Database Connection"
HorizontalAlignment="Left"
Height="243"
Margin="10,10,0,0"
VerticalAlignment="Top"
Width="333">
<Grid>
<TextBox x:Name="TextUserDB"
HorizontalAlignment="Left"
Height="20"
Margin="101,60,0,0"
TextWrapping="Wrap"
VerticalAlignment="Top"
Width="173" />
<Label Content="Password:"
HorizontalAlignment="Left"
Height="24"
VerticalAlignment="Top"
Width="70"
HorizontalContentAlignment="Right"
Margin="10,85,0,0" />
<PasswordBox x:Name="TextPasswordDB"
HorizontalAlignment="Left"
Height="20"
Margin="101,89,0,0"
VerticalAlignment="Top"
Width="173" />
<Button x:Name="BtnConnect"
Content="Connetti"
Height="29"
Width="123"
Margin="101,152,97,24"
Click="BtnConnect_Click" />
</Grid>
</GroupBox>
</Grid>
</UserControl>
Quand je me Décharger de ce Contrôle, WPF élever événement DBLoginUserFrame_Unloaded que enregistrer mes paramètres et il fait un travail.
J'ai le MainWindow de WPF charge de ce contrôle de l'utilisateur, mais lorsque la fenêtre est fermée, mon usercontrol DÉCHARGER n'est pas le feu:
<Window x:Class="XLogin.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525"
xmlns:local="clr-namespace:XLogin" Unloaded="Window_Unloaded_1">
<Grid>
<local:DBLogin/>
</Grid></Window>
Comment faire pour ajouter le contrôle UserControl événement Unload à MainWindow gestionnaire d'événement?
source d'informationauteur davymartu
Vous devez vous connecter pour publier un commentaire.
De la la documentation:
"Notez que l'Déchargé événement n'est pas déclenché, après que la demande commence à se fermer. L'arrêt de l'Application se produit lorsque les conditions définies par le ShutdownMode de propriété se produit. Si vous placez le code de nettoyage à l'intérieur d'un gestionnaire pour le Déchargement de l'événement, comme pour une Fenêtre ou d'un UserControl, il ne peut pas être appelé comme prévu."
Si la fermeture de votre Fenêtre de déclenchement à l'application de l'arrêt, qui pourraient être la cause. Dans ce cas, même la Fenêtre de l'événement Unload pourrait ne pas être appelé ainsi, donc, je crois qu'il est préférable de s'appuyer sur la De la fenêtre.Fermeture événement.
Une approche pour gérer les tâches de votre UserControl n'lors du déchargement est d'exposer les décharger d'une méthode de gestionnaire de la commande ("DBLoginUserFrame_Unloaded"), le nom de votre instance UserControl dans la MainWindow et de l'appeler à partir de la Fenêtre.Clôture de l'évènement.
Une autre option est de garder la mise en œuvre jusqu'à présent, mais aussi l'ajouter dans votre UserControl un gestionnaire pour le Répartiteur.ShutdownStarted événement, comme décrit ici.
Vous pouvez aussi mettre de la logique dans le contrôle de l'utilisateur lui-même pour tenir un peu plus autonome.
Vu ça ici:
https://social.msdn.microsoft.com/Forums/vstudio/en-US/477e7e74-ccbf-4498-8ab9-ca2f3b836597/how-to-know-when-a-wpf-usercontrol-is-closing?forum=wpf