Dela via


Gör så här: Lägga till en händelsehanterare med hjälp av kod

Det här exemplet visar hur du lägger till en händelsehanterare i ett element med hjälp av kod.

Om du vill lägga till en händelsehanterare i ett XAML-element och markeringssidan som innehåller elementet redan har lästs in måste du lägga till hanteraren med hjälp av kod. Om du skapar elementträdet för ett program helt med hjälp av kod och inte deklarerar några element med XAML kan du anropa specifika metoder för att lägga till händelsehanterare i det konstruerade elementträdet.

Exempel

I följande exempel läggs en ny Button till på en befintlig sida som ursprungligen definieras i XAML. En kod-bakom-fil implementerar en händelsehanterarmetod och lägger sedan till den metoden som en ny händelsehanterare på Button.

I C#-exemplet används +=-operatorn för att tilldela en hanterare till en händelse. Det här är samma operator som används för att tilldela en hanterare i CLR-händelsehanteringsmodellen (Common Language Runtime). Microsoft Visual Basic stöder inte den här operatorn som ett sätt att lägga till händelsehanterare. Det kräver i stället någon av två tekniker:

  • Använd metoden AddHandler tillsammans med en AddressOf-operator för att referera till händelsehanterarimplementeringen.

  • Använd nyckelordet Handles som en del av händelsehanterardefinitionen. Den här tekniken visas inte här. se Visual Basic- och WPF-händelsehantering.

<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 {
    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!!";
    }
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

Not

Det är mycket enklare att lägga till en händelsehanterare på den ursprungligen parsade XAML-sidan. I objektelementet där du vill lägga till händelsehanteraren lägger du till ett attribut som matchar namnet på den händelse som du vill hantera. Ange sedan värdet för attributet som namnet på den händelsehanterarmetod som du definierade i filen bakom koden på XAML-sidan. Mer information finns i XAML i WPF eller Routed Events Overview.

Se även