TOC

This article has been localized into French by the community.

Le XAML:

Les évènements en XAML

La plupart des frameworks UI modernes sont pilotés par les évènements, il en est de même pour WPF. Tout les contrôles, même les fenêtres, (qui héritent également de la classe Control ), possèdent un ensemble d'évènements auquel vous pouvez souscrire. Il est possible de souscrire à ces évènements, ce qui veut dire que votre application sera avertie quand ils se produiront et vous pourrez y réagir.

Il y a un grand nombre de types d'évènements. Mais les plus utilisés sont ceux qui réagissent aux interactions faites par l'utilisateur avec votre application en utilisant une souris ou un clavier. Sur la plupart des contrôles vous trouverez des évènements comme : KeyDown, KeyUp, MouseDown, MouseEnter, MouseLeave, MouseUp et plusieurs autres.

Nous verrons plus en détail comment marchent les événements en WPF car c'est un sujet complexe, mais pour l'instant, nous devons savoir comment lier un événement d'un contrôle XAML à un code dans notre précédent fichier. Jetez un coup d’œil à cet exemple :

<Window x:Class="WpfTutorialSamples.XAML.EventsSample"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="EventsSample" Height="300" Width="300">
	<Grid Name="pnlMainGrid" MouseUp="pnlMainGrid_MouseUp" Background="LightBlue">        
		
    </Grid>
</Window>

Remarquez de quelle façon nous nous sommes abonnés à l'évènement MouseUp de Grid : en écrivant un nom de méthode. Cette méthode nécessite d'être définie, plus loin dans le code, en utilisant la signature d'évènement correspondante. Dans ce cas, ça devrait ressembler à ça :

private void pnlMainGrid_MouseUp(object sender, MouseButtonEventArgs e)
{
	MessageBox.Show("You clicked me at " + e.GetPosition(this).ToString());
}

L'évènement MouseUp utilise un délégué appelé MouseButtonEventHandler, auquel vous vous êtes abonné. Il a deux paramètres, un sender (le contrôle qui a levé (détecté) l'évènement) et un objet de type MouseButtonEventArgs qui contiendra de précieuses informations. Nous l'utilisons dans cet exemple pour obtenir la position de la souris et en informer l'utilisateur.

Plusieurs événements peuvent utiliser le même type de délégué. Par exemple, MouseUp et MouseDown utilisent le même délégué MouseButtonEventHandler, tandis que l’événement MouseMove utilise le délégué MouseEventHandler. Quand on définit la méthode du gestionnaire d’événement (ou "event handler"), vous devez savoir quel délégué est utilisé et si vous ne savez pas cela, vous pouvez le trouver dans la documentation.

Heureusement, Visual Studio peut nous aider à générer un bon gestionnaire d’événement. La façon la plus simple de le faire est d'écrire tout simplement le nom de l’événement en XAML puis de laisser l'outil IntelliSense (complétion automatique) de VS faire le reste :

Quand vous sélectionnez <New Event Handler> Visual Studio un handler d'évènement approprié dans votre fichier Code-behind. Il sera nommé <control name>_<event name>, dans notre cas pnlMainGrid_MouseDown. Cliquez droit sur le nom de l'évènement et sélectionnez Navigate to Event Handler et VS vous amènera juste dessus.

S'abonner à un évènement de Code-behind

La façon la plus commune de s'abonner à un évènement est expliquée ci-dessus, mais il y aura des fois où vous voudrez vous abonner à un évènement directement à partir du Code-behind. Ceci est faisable en utilisant la synthaxe += du C#, ou vous ajoutez un handler d'évènement directement au handler de l'objet. L'explication complète de ceci sera dans un exemple dédié au C#, mais pour comparaison, voici un exemple :

using System;
using System.Windows;
using System.Windows.Input;


namespace WpfTutorialSamples.XAML
{
	public partial class EventsSample : Window
	{
		public EventsSample()
		{
			InitializeComponent();
			pnlMainGrid.MouseUp += new MouseButtonEventHandler(pnlMainGrid_MouseUp);
		}

		private void pnlMainGrid_MouseUp(object sender, MouseButtonEventArgs e)
		{
			MessageBox.Show("You clicked me at " + e.GetPosition(this).ToString());
		}

	}
}

Une fois de plus, vous devez savoir quel délégué utiliser, et encore une fois, Visual Studio peut vous aider à cela. Dès que vous écrivez :

pnlMainGrid.MouseDown +=

Visual Studio vous offrira son aide :

Pressez tout simplement deux fois la touche [Tab] pour que Visual Studio génère le bon handler d'évènement pour vous, comme en dessous de la méthode actuelle, prêt à être implémenté. Quand vous vous abonnez à un évènement de cette manière, vous n'avez pas besoin de le faire en XAML.

This article has been fully translated into the following languages: Is your preferred language not on the list? Click here to help us translate this article into your language!