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

Classe RoutedEvent

Rappresenta e identifica un evento indirizzato e dichiara le relative caratteristiche.

System.Object
  System.Windows.RoutedEvent

Spazio dei nomi:  System.Windows
Assembly:  PresentationCore (in PresentationCore.dll)
XMLNS per XAML: http://schemas.microsoft.com/winfx/2006/xaml/presentation, http://schemas.microsoft.com/netfx/2007/xaml/presentation

[TypeConverterAttribute("System.Windows.Markup.RoutedEventConverter, PresentationFramework, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, Custom=null")]
public sealed class RoutedEvent
<object property="eventName"/>
- or -
<object property="type.eventName"/>

Valor XAML

eventName

Un nome di evento non qualificato, equivalente a Name proprietà di RoutedEvent campo, non il nome effettivo del membro di RoutedEvent campo dell'identificatore all'interno di un tipo. Senza qualifica, eventName deve avere un evento come constatato nel tipo da TargetType il contenuto corrente di stile EventSetter o EventTrigger.

tipo

Il tipo da utilizzare per qualificare il nome dell'evento. Se senza un prefisso, tipo è previsto come un tipo nello spazio dei nomi XAML predefinito e che può essere associata a un tipo CLR esistente. Per gli eventi personalizzati, o gli eventi che rappresentano i tipi al di fuori degli spazi dei nomi XAML predefinito, la stringa da tipo può includere un prefisso per uno spazio dei nomi mappato XAML. Lo spazio dei nomi XAML deve contenere il tipo XAML che può eseguire il mapping a un tipo CLR sottostante e che il tipo CLR deve definire l'identificatore desiderato di eventi indirizzati. Per informazioni dettagliate sul mapping dello spazio dei nomi XAML, vedere Spazi dei nomi XAML e mapping dello spazio dei nomi per XAML WPF.

Il tipo RoutedEvent espone i seguenti membri.

  NomeDescrizione
Proprietà pubblicaHandlerTypeOttiene il tipo di gestore dell'evento indirizzato.
Proprietà pubblicaNameOttiene il nome di identificazione dell'evento indirizzato.
Proprietà pubblicaOwnerTypeOttiene il tipo registrato il proprietario dell'evento indirizzato.
Proprietà pubblicaRoutingStrategyOttiene la strategia di routing dell'evento indirizzato.
In alto

  NomeDescrizione
Metodo pubblicoAddOwnerAssocia un altro tipo di proprietario all'evento indirizzato rappresentato da un oggetto RoutedEvent istanza di e abilitare il routing dell'evento e della gestione.
Metodo pubblicoEquals(Object) Determina se l'oggetto specificato è uguale all'oggetto corrente. (Ereditato da Object)
Metodo pubblicoGetHashCode Funge da funzione hash per un particolare tipo. (Ereditato da Object)
Metodo pubblicoGetType Ottiene il Type dell'istanza corrente. (Ereditato da Object)
Metodo pubblicoToStringRestituisce la rappresentazione di stringa di l RoutedEvent. (Esegue l'override di Object.ToString()).
In alto

questa classe contiene Name, RoutingStrategy, HandlerTypee OwnerType proprietà. nessuno di questi membri possono avere valori null.

Questa classe ha un utilizzo di XAML che separatamente è progettato per fornire un valore di RoutedEvent proprietà di EventTrigger (classe derivata o, oppure per Event proprietà di EventSetter (o classe derivata. per ulteriori informazioni su EventTrigger, EventSettere utilizzi di XAML per tali classi, 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.

Qualsiasi membro pubblico static (Shared in Visual Basic) di questo tipo è thread-safe. I membri di istanza non sono garantiti come thread-safe.

Aggiunte alla community

AGGIUNGI
Mostra:
© 2015 Microsoft