Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
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
- översikt över routade händelser
- Guideämnen
.NET Desktop feedback