Élever un événement sur la fenêtre parent à partir d'un contrôle utilisateur dans .NET C #
Le titre très jolie explique la question. J'ai un contrôle de l'utilisateur chargé dans la fenêtre principale lors de l'application de la première exécution. Ce que je veux faire est de déclencher un événement sur la fenêtre parent quand un bouton sur le contrôle de l'utilisateur est cliqué, alors comment puis-je élever un parent événement button1_Click sur le contrôle de l'utilisateur?
source d'informationauteur user246392
Vous devez vous connecter pour publier un commentaire.
Vous avez besoin d'un RoutedEvent lien
"Les événements routés sont des événements qui naviguer vers le haut ou le bas de l'arborescence visuelle selon leur RoutingStrategy. La stratégie de routage peut être à bulle, d'un tunnel ou direct. Vous pouvez connecter les gestionnaires d'événements sur l'élément qui déclenche l'événement ou aussi sur d'autres éléments au-dessus ou au-dessous en utilisant l'événement attaché syntaxe: Bouton.Click="Button_Click"."
Ce problème semble ne pas être entièrement décrit de bout en bout n'importe où: Le lien fourni ci-dessus est pas une explication complète de la façon de définir, de les élever, et attraper un événement à partir d'un UserControl à une fenêtre parent. Il peut être évident pour certains, mais il m'a fallu une minute pour relier les points, donc je vais partager mes découvertes. Oui, la façon de le faire est par l'intermédiaire d'un Personnalisé RoutedEvent ensemble de RoutingStrategy.Bulle, mais il ya plus à l'histoire.
Dans cet exemple, j'ai un UserControl, nommé ServerConfigs qui a un Bouton "Enregistrer". Lorsque l'utilisateur clique sur le bouton Enregistrer, je veux un bouton sur la Fenêtre parent, qui contient le contrôle UserControl pour permettre à un autre bouton, le bouton est appelé btn_synchronize.
Sur le code UserControl derrière définir les éléments suivants, ci-dessus RoutedEvent lien cité ci-dessus.
Il y a l'exemple de mise en œuvre, où le tutoriel ci-dessus se termine. Alors, comment fait-on attraper le cas sur la fenêtre et de le manipuler?
De la fenêtre.xaml, c'est comment la Coutume RoutedEventHandler définis dans le contrôle de l'utilisateur peut être utilisé. C'est exactement comme le bouton.cliquez sur etc.
OU dans le code de la Fenêtre derrière vous, vous pouvez configurer le Gestionnaire d'événements via AddHandler, généralement dans le constructeur: