Exporter (0) Imprimer
Développer tout
Développer Réduire
Cet article a fait l'objet d'une traduction automatique. Déplacez votre pointeur sur les phrases de l'article pour voir la version originale de ce texte. Informations supplémentaires.
Traduction
Source

RoutingStrategy, énumération

Indique la stratégie de routage d'un événement routé.

Espace de noms :  System.Windows
Assembly :  PresentationCore (dans PresentationCore.dll)

public enum RoutingStrategy
<propriété d'objet="NomMembreÉnumération" .../>

Nom de membreDescription
BubbleL'événement routé utilise une stratégie de propagation, où l'instance de l'événement effectue le routage vers le haut dans l'arborescence, depuis l'élément source jusqu'à la racine.
DirectL'événement routé n'effectue pas de routage à travers une arborescence d'éléments, mais prend en charge d'autres fonctions d'événement routés telles que la gestion des classes, EventTrigger ou EventSetter.
TunnelL'événement routé utilise une stratégie de tunneling, où l'instance de l'événement effectue le routage vers le bas dans l'arborescence, depuis la racine jusqu'à l'élément source.

La stratégie de routage de chaque événement routé ne doit être que l'une de ces valeurs. Toutefois, les événements d'entrée existent souvent par paires sur les classes de base, paires dans lesquelles un événement est la version de propagation et l'autre événement est la version de tunneling. Pour les événements d'entrée considérés de façon unique, les versions de tunneling et de propagation ont des arguments partagés et sont déclenchées à la suite en réponse à la condition de périphérique d'entrée qui déclenche les événements.

Pour que votre événement personnalisé prenne en charge le routage d'événement, vous devez enregistrer un RoutedEvent à l'aide de la méthode RegisterRoutedEvent. Cet exemple montre les principes de base de la création d'un événement routé personnalisé.

Comme illustré dans l'exemple suivant, enregistrez d'abord un RoutedEvent à l'aide de la méthode RegisterRoutedEvent. Par convention, le nom de champ statique RoutedEvent doit se terminer par le suffixe Event. Dans cet exemple, l'événement porte le nom Tap et la stratégie de routage de l'événement est Bubble. Après l'appel d'inscription, vous pouvez fournir des accesseurs d'événement Common Language Runtime (CLR) ajout/suppression pour l'événement.

Notez que même si, dans cet exemple, l'événement est déclenché au moyen de la méthode virtuelle OnTap, la manière dont vous déclenchez votre événement ou dont votre événement répond aux modifications dépend de vos besoins.

Notez également que cet exemple implémente fondamentalement toute une sous-classe de Button ; cette sous-classe est construite comme un assembly distinct, puis est instanciée comme une classe personnalisée d'une page XAML (eXtensible Application Markup Language) distincte. Pour illustrer le concept, les contrôles sous-classés peuvent être insérés dans des arborescences composées d'autres contrôles. Dans cette situation, les événements personnalisés de ces contrôles ont exactement les mêmes fonctionnalités de routage d'événements que tout élément Windows Presentation Foundation (WPF) natif.


Public Class MyButtonSimple
    Inherits Button

    ' Create a custom routed event by first registering a RoutedEventID
    ' This event uses the bubbling routing strategy
    Public Shared ReadOnly TapEvent As RoutedEvent = EventManager.RegisterRoutedEvent("Tap", RoutingStrategy.Bubble, GetType(RoutedEventHandler), GetType(MyButtonSimple))

    ' Provide CLR accessors for the event
    Public Custom Event Tap As RoutedEventHandler
        AddHandler(ByVal value As RoutedEventHandler)
            Me.AddHandler(TapEvent, value)
        End AddHandler

        RemoveHandler(ByVal value As RoutedEventHandler)
            Me.RemoveHandler(TapEvent, value)
        End RemoveHandler

        RaiseEvent(ByVal sender As Object, ByVal e As RoutedEventArgs)
            Me.RaiseEvent(e)
        End RaiseEvent
    End Event

    ' This method raises the Tap event
    Private Sub RaiseTapEvent()
        Dim newEventArgs As New RoutedEventArgs(MyButtonSimple.TapEvent)
        MyBase.RaiseEvent(newEventArgs)
    End Sub

    ' For demonstration purposes we raise the event when the MyButtonSimple is clicked
    Protected Overrides Sub OnClick()
        Me.RaiseTapEvent()
    End Sub

End Class



public class MyButtonSimple: Button
{
    // Create a custom routed event by first registering a RoutedEventID
    // This event uses the bubbling routing strategy
    public static readonly RoutedEvent TapEvent = EventManager.RegisterRoutedEvent(
        "Tap", RoutingStrategy.Bubble, typeof(RoutedEventHandler), typeof(MyButtonSimple));

    // Provide CLR accessors for the event
    public event RoutedEventHandler Tap
    {
            add { AddHandler(TapEvent, value); } 
            remove { RemoveHandler(TapEvent, value); }
    }

    // This method raises the Tap event
    void RaiseTapEvent()
    {
            RoutedEventArgs newEventArgs = new RoutedEventArgs(MyButtonSimple.TapEvent);
            RaiseEvent(newEventArgs);
    }
    // For demonstration purposes we raise the event when the MyButtonSimple is clicked
    protected override void OnClick()
    {
        RaiseTapEvent();
    }

}



<Window  
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:custom="clr-namespace:SDKSample;assembly=SDKSampleLibrary"
    x:Class="SDKSample.RoutedEventCustomApp"

    >
    <Window.Resources>
      <Style TargetType="{x:Type custom:MyButtonSimple}">
        <Setter Property="Height" Value="20"/>
        <Setter Property="Width" Value="250"/>
        <Setter Property="HorizontalAlignment" Value="Left"/>
        <Setter Property="Background" Value="#808080"/>
      </Style>
    </Window.Resources>
    <StackPanel Background="LightGray">
	    <custom:MyButtonSimple Name="mybtnsimple" Tap="TapHandler">Click to see Tap custom event work</custom:MyButtonSimple>
    </StackPanel>
</Window>


Les événements de tunneling sont créés de la même manière, mais avec RoutingStrategy ayant la valeur Tunnel dans l'appel d'inscription. Par convention, les événements de tunneling dans WPF sont précédés du préfixe « Preview ».

Pour voir un exemple du fonctionnement des événements de propagation, consultez Comment : gérer un événement routé.

.NET Framework

Pris en charge dans : 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0

.NET Framework Client Profile

Pris en charge dans : 4, 3.5 SP1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (rôle principal du serveur non pris en charge), Windows Server 2008 R2 (rôle principal du serveur pris en charge avec SP1 ou version ultérieure ; Itanium non pris en charge)

Le .NET Framework ne prend pas en charge toutes les versions de chaque plateforme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise du .NET Framework.

Ajouts de la communauté

AJOUTER
Afficher:
© 2015 Microsoft