Esporta (0) Stampa
Espandi tutto
Espandi Riduci a icona
Il presente articolo è stato tradotto automaticamente. Passare il puntatore sulle frasi nell'articolo per visualizzare il testo originale. Ulteriori informazioni.
Traduzione
Originale

Enumerazione RoutingStrategy

Indica la strategia di routing di un oggetto evento indirizzato.

Spazio dei nomi:  System.Windows
Assembly:  PresentationCore (in PresentationCore.dll)

public enum RoutingStrategy
<object property="enumerationMemberName" .../>

Nome membroDescrizione
Bubbleevento indirizzato utilizza un oggetto bubbling strategia, in cui l'istanza dell'evento l'indirizzamento verso l'alto nella struttura ad albero, dall'origine evento da inserirsi.
Directevento indirizzato non è destinato a tramite una struttura ad albero di elementi, ma supporta altre funzionalità di eventi indirizzati come gestione della classe, EventTrigger o EventSetter.
Tunnelevento indirizzato utilizza un oggetto tunneling strategia, in cui l'istanza dell'evento l'indirizzamento verso il basso nella struttura ad albero, da radice di origine elemento.

strategia di routing per ciascuno evento indirizzato deve essere solo uno di questi valori. Tuttavia, gli eventi di input sono spesso in coppie sulle classi di base, in cui un evento è la versione di bubbling e un evento è la versione di tunneling. Per gli eventi di input in modo univoco, le versioni di tunneling e di bubbling condivisi gli argomenti e vengono generati in successione in risposta allo stato del dispositivo di input che genera gli eventi.

Affinché l'evento personalizzato supporti il routing degli eventi, è necessario registrare un oggetto RoutedEvent utilizzando il metodo RegisterRoutedEvent. In questo esempio vengono illustrate le nozioni di base per la creazione di un evento indirizzato personalizzato.

Come mostrato nell'esempio seguente, è necessario innanzi tutto registrare un oggetto RoutedEvent utilizzando il metodo RegisterRoutedEvent. Per convenzione, il nome del campo statico RoutedEvent deve terminare con il suffisso Event In questo esempio, il nome dell'evento è Tap e la strategia di routing dell'evento è Bubble. Dopo la chiamata di registrazione, è possibile fornire funzioni di accesso di aggiunta e rimozione dell'evento Common Language Runtime (CLR) per l'evento.

Si noti che anche se l'evento viene generato tramite il metodo virtuale OnTap in questo particolare esempio, la modalità di generazione dell'evento o la relativa risposta alle modifiche varierà in base alle esigenze.

In questo esempio inoltre viene implementata un'intera sottoclasse di Button; tale sottoclasse è compilata come assembly separato e ne viene quindi creata un'istanza come classe personalizzata in una pagina Extensible Application Markup Language (XAML) separata. Ciò vale a dimostrare che i controlli sottoclassati possono essere inseriti in strutture ad albero composte di altri controlli e che, in una situazione del genere, gli eventi personalizzati su questi controlli dispongono delle stesse funzionalità di routing di qualsiasi elemento Windows Presentation Foundation (WPF) nativo.


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>


Gli eventi di tunneling sono creati con la stessa modalità, ma impostando la proprietà RoutingStrategy su Tunnel nella chiamata di registrazione. Per convenzione, gli eventi di tunneling in WPF vengono denominati con il prefisso "Preview".

Per un esempio di funzionamento degli eventi di bubbling, vedere Procedura: gestire un evento indirizzato.

.NET Framework

Supportato in: 4.5, 4, 3.5, 3.0

.NET Framework Client Profile

Supportato in: 4, 3.5 SP1

Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (ruoli di base del server non supportati), Windows Server 2008 R2 (ruoli di base del server supportati con SP1 o versione successiva, Itanium non supportato)

.NET Framework non supporta tutte le versioni di ciascuna piattaforma. Per un elenco delle versioni supportate, vedere Requisiti di sistema di .NET Framework.

Aggiunte alla community

AGGIUNGI
Mostra:
© 2014 Microsoft