Gewusst wie: Hinzufügen eines Ereignishandlers mithilfe von Code
In diesem Beispiel wird veranschaulicht, wie ein Ereignishandler einem Element mithilfe von Code hinzugefügt.
Wenn Sie einen Ereignishandler einem XAML-Element hinzufügen möchten und die Markupseite, die das Element enthält, bereits geladen wurde, müssen Sie den Handler mithilfe von Code hinzufügen. Sie haben aber auch die Möglichkeit, spezielle Methoden zum Hinzufügen von Ereignishandlern zu der erstellen Elementstruktur aufzurufen, wenn Sie die Elementstruktur für eine Anwendung insgesamt mithilfe von Code erstellen und Elemente nicht mit XAML deklarieren.
Beispiel
Im folgenden Beispiel wird eine neue Button einer vorhandenen Seite hinzugefügt, die anfänglich in XAML definiert wurde. Eine Code-Behind-Datei implementiert eine Ereignishandlermethode und fügt dann diese Methode als neuen Ereignishandler der Button hinzu.
Im C#-Beispiel wird der Operator += verwendet, um einen Handler einem Ereignis zuzuweisen. Dieser Operator wird auch verwendet, um einen Handler im common language runtime (CLR)-Ereignisbehandlungsmodell zuzuweisen. Microsoft Visual Basic unterstützt diesen Operator nicht als Mittel zum Hinzufügen von Ereignishandlern. Stattdessen ist eines der beiden folgenden Verfahren erforderlich:
Verwenden Sie die AddHandler-Methode, zusammen mit einem Operator AddressOf, um auf die Ereignishandlerimplementierung zu verweisen.
Verwenden Sie das Handles-Schlüsselwort als Teil der Ereignishandlerdefinition. Dieses Verfahren wird nicht hier beschrieben. Nähere Informationen hierzu finden Sie unter Visual Basic- und WPF-Ereignisbehandlung.
<TextBlock Name="text1">Start by clicking the button below</TextBlock>
<Button Name="b1" Click="MakeButton">Make new button and add handler to it</Button>
Public Partial Class RoutedEventAddRemoveHandler
Private Sub MakeButton(ByVal sender As Object, ByVal e As RoutedEventArgs)
Dim b2 As Button = New Button()
b2.Content = "New Button"
AddHandler b2.Click, AddressOf Onb2Click
root.Children.Insert(root.Children.Count, b2)
DockPanel.SetDock(b2, Dock.Top)
text1.Text = "Now click the second button..."
b1.IsEnabled = False
End Sub
Private Sub Onb2Click(ByVal sender As Object, ByVal e As RoutedEventArgs)
text1.Text = "New Button (b2) Was Clicked!!"
End Sub
public partial class RoutedEventAddRemoveHandler {
void MakeButton(object sender, RoutedEventArgs e)
{
Button b2 = new Button();
b2.Content = "New Button";
// Associate event handler to the button. You can remove the event
// handler using "-=" syntax rather than "+=".
b2.Click += new RoutedEventHandler(Onb2Click);
root.Children.Insert(root.Children.Count, b2);
DockPanel.SetDock(b2, Dock.Top);
text1.Text = "Now click the second button...";
b1.IsEnabled = false;
}
void Onb2Click(object sender, RoutedEventArgs e)
{
text1.Text = "New Button (b2) Was Clicked!!";
}
Hinweis |
---|
Es ist viel einfacher, der anfänglich analysierten XAML-Seite einen Ereignishandler hinzuzufügen.Fügen Sie innerhalb des Objektelements an der Stelle, an der Sie den Ereignishandler hinzufügen möchten, ein Attribut hinzu, das dem Namen des Elements entspricht, das Sie behandeln möchten.Geben Sie dann den Wert dieses Attributs als Namen der Handlermethode an, die Sie in der Code-Behind-Datei der XAML-Seite definiert haben.Weitere Informationen finden Sie unter Übersicht über XAML (WPF) oder unter Übersicht über Routingereignisse. |
Siehe auch
Konzepte
Übersicht über Routingereignisse