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

Metodo EventManager.RegisterRoutedEvent

registra un nuovo evento indirizzato con Windows Presentation Foundation (WPF) sistema di eventi.

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

public static RoutedEvent RegisterRoutedEvent(
	string name,
	RoutingStrategy routingStrategy,
	Type handlerType,
	Type ownerType
)

Parametri

name
Tipo: System.String
Il nome dell'evento indirizzato. Il nome deve essere univoco all'interno del tipo di proprietario e non può essere null o una stringa vuota.
routingStrategy
Tipo: System.Windows.RoutingStrategy
La strategia di routing dell'evento come valore dell'enumerazione.
handlerType
Tipo: System.Type
Il tipo del gestore eventi. Deve trattarsi di un tipo delegato e non può essere null.
ownerType
Tipo: System.Type
Il tipo della classe proprietario dell'evento indirizzato. Questa operazione non può essere null.

Valore restituito

Tipo: System.Windows.RoutedEvent
l'identificatore per l'evento indirizzato appena registrato. Questo oggetto dell'identificatore può ora essere archiviato come campo statico nella classe e quindi essere utilizzato come parametro dei metodi associati gestori all'evento. L'identificatore di evento indirizzato viene utilizzato per altro sistema di eventi API.

Utilizzare il valore restituito del metodo per creare la dichiarazione statica per un univoco RoutedEvent campo di identificazione. Questo campo deve essere archiviato nel tipo di proprietario.

Esistono un numero considerevole convenzioni e procedure consigliate associate al funzionamento degli eventi indirizzati devono essere denominati, registrati ed essere esposti nella classe. Per ulteriori informazioni, vedere Cenni preliminari sugli eventi indirizzati.

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