UIElement.AddHandler(RoutedEvent, Object, Boolean) Metodo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Aggiunge un gestore eventi indirizzati per un evento indirizzato specifico, aggiungendo il gestore alla raccolta di gestori nell'elemento corrente. Specificare handledEventsToo
come true
per fare in modo che venga richiamato il gestore fornito anche se l'evento viene gestito altrove.
public:
virtual void AddHandler(RoutedEvent ^ routedEvent, Platform::Object ^ handler, bool handledEventsToo) = AddHandler;
void AddHandler(RoutedEvent const& routedEvent, IInspectable const& handler, bool const& handledEventsToo);
public void AddHandler(RoutedEvent routedEvent, object handler, bool handledEventsToo);
function addHandler(routedEvent, handler, handledEventsToo)
Public Sub AddHandler (routedEvent As RoutedEvent, handler As Object, handledEventsToo As Boolean)
Parametri
- routedEvent
- RoutedEvent
Identificatore dell'evento indirizzato da gestire.
- handler
-
Object
Platform::Object
IInspectable
Riferimento all'implementazione del gestore.
- handledEventsToo
-
Boolean
bool
true
per registrare il gestore in modo che venga richiamato anche quando l'evento indirizzato viene contrassegnato come gestito nei dati dell'evento.
false
per registrare il gestore con la condizione predefinita che non verrà richiamata se l'evento indirizzato è già contrassegnato come gestito. Il valore predefinito è false
.
Non chiedere di modificare regolarmente un evento indirizzato, perché interferisce con la progettazione prevista del sistema di eventi Windows Runtime per la composizione del controllo.
Esempio
In questo esempio viene illustrata la sintassi di base per collegare un gestore eventi con AddHandler
e handledEventsToo
come true
. In questo caso l'evento collegato viene toccato. La posizione tipica dei gestori di collegamento è Loaded per una pagina o OnApplyTemplate per un controllo basato su modelli.
void MainPage::pageRoot_Tapped(Platform::Object^ sender, Windows::UI::Xaml::Input::TappedRoutedEventArgs^ e)
{
//implementation
}
void MainPage::pageRoot_Loaded(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e)
{
this->AddHandler(UIElement::TappedEvent, ref new TappedEventHandler(this, &MainPage::pageRoot_Tapped), true);
}
private void pageRoot_Tapped(object sender, TappedRoutedEventArgs e)
{
//implementation
}
private void pageRoot_Loaded_1(object sender, RoutedEventArgs e)
{
this.AddHandler(UIElement.TappedEvent, new TappedEventHandler(pageRoot_Tapped), true);
}
Commenti
Non provare a usare AddHandler
come sostituto generale per la sintassi specifica del linguaggio che normalmente si usa per i gestori eventi di cablaggio. Non funzionerà, perché non tutti gli eventi hanno un identificatore che è possibile passare come routedEvent
.
AddHandler
è specificamente per gli eventi indirizzati e destinato principalmente allo scenario specifico abilitato passando handledEventsToo
come true
. Per altre informazioni, vedi Panoramica degli eventi e degli eventi indirizzati.
Identificatori di evento indirizzati
L'identificatore di evento indirizzato è in genere un membro di proprietà statica di UIElement. Ad esempio, per aggiungere un gestore per l'evento KeyUp , passare KeyUpEvent per questo parametro. Solo un numero ridotto di eventi Windows Runtime ha questo identificatore. Solo gli eventi indirizzati in UIElement hanno un'API identificatore disponibile per questo utilizzo. Si tratta in genere di eventi correlati alle azioni di input a vari livelli: livello di puntatore, livello di movimento, livello di manipolazione. Inoltre, gli eventi di input della chiave possono essere gestiti in questo modo.
Ecco un elenco di eventi indirizzati che espongono un identificatore di evento indirizzato e possono quindi essere elaborati da gestori registrati da una AddHandler
chiamata:
- DoubleTapped
- DragEnter
- DragLeave
- DragOver
- Goccia
- Holding
- KeyDown
- KeyUp
- ManipulationCompleted
- ManipulationDelta
- ManipulationInertiaStarting
- ManipulationStarted
- ManipulationStarting
- PointerCanceled
- PointerCaptureLost
- PointerEntered
- PointerExited
- PointerMoved
- PointerPressed
- PointerReleased
- PointerWheelChanged
- RightTapped
- Tapped
Parametro del gestore
Il handler
parametro è un parametro non tipizzato, ma è necessario fornire un nuovo delegato che fa riferimento a un metodo del gestore specifico dell'evento desiderato. Ad esempio, se si gestisce un evento KeyUp , passare una nuova istanza KeyEventHandler che fa riferimento a un metodo basato sulla firma del KeyEventHandler
delegato. Ciò richiede una dereferenziazione e la sintassi di dereferenziazione varia a seconda del linguaggio in uso. Vedere gli esempi in questo argomento.
Quando usare handledEventsToo
L'elaborazione di eventi di input di basso livello in modo pratico è un'attività complessa. Molti controlli implementano il comportamento in cui un determinato evento viene contrassegnato come gestito e viene sostituito da un altro evento più intuitivo. In genere, un controllo contrassegna un evento indirizzato come gestito solo se esiste un'intenzione di progettazione per farlo. In alcuni scenari, tuttavia, queste intenzioni di progettazione potrebbero non essere quelle richieste dalla gestione specifica dell'evento di input. È per questi scenari che registrano i gestori con handledEventsToo
come true
appropriato. Ma non dovresti farlo regolarmente. Richiamare i gestori in risposta a tutti gli eventi anche se gestiti complica la logica di elaborazione degli eventi dell'app. È possibile che si verifichi una diminuzione delle prestazioni se la logica del gestore è sostanziale. È consigliabile collegare gestori a eventi già gestiti solo se si è scoperto che determinati controlli gestiscono eventi che si desidera gestire con la logica dell'app.
Un'altra tecnica per evitare il comportamento di gestione delle classi di un controllo consiste nel sottoclasse che controllano ed eseguono l'override dei relativi metodi On Event, che sono sostituzioni preconfigurate da cui il controllo contrassegna un evento come gestito. Tuttavia, anche questo può essere complesso. Potrebbe essere necessario riprodurre l'implementazione di gestione di un controllo senza chiamare l'implementazione di base, perché l'implementazione di base contrassegna l'evento come gestito. Per altre informazioni, vedi Panoramica degli eventi e degli eventi indirizzati.