Cómo: Agregar un controlador de eventos mediante código
En este ejemplo se muestra cómo agregar un controlador de eventos a un elemento mediante código.
Si quiere agregar un controlador de eventos a un elemento XAML y la página de marcado que contiene el elemento ya se ha cargado, debe agregar el controlador mediante código. Como alternativa, si va a crear el árbol de elementos para una aplicación completamente usando código y no declara ningún elemento mediante XAML, puede llamar a métodos específicos para agregar controladores de eventos al árbol de elementos construido.
Ejemplo
En el ejemplo siguiente se agrega un nuevo Button a una página existente que se define inicialmente en XAML. Un archivo de código subyacente implementa un método de controlador de eventos y, a continuación, agrega ese método como un nuevo controlador de eventos en Button.
En el ejemplo de C# se usa el operador +=
para asignar un controlador a un evento. Este es el mismo operador que se usa para asignar un controlador en el modelo de control de eventos de Common Language Runtime (CLR). Microsoft Visual Basic no admite este operador como medio para agregar controladores de eventos. En su lugar, requiere una de estas dos técnicas:
Use el método AddHandler, junto con un operador
AddressOf
, para referenciar la implementación del controlador de eventos.Utilice la palabra clave
Handles
como parte de la definición del controlador de eventos. Esta técnica no se muestra aquí; consulte Visual Basic y control de eventos de WPF.
<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
Nota:
Agregar un controlador de eventos en la página XAML analizado inicialmente es mucho más sencillo. Dentro del elemento objeto donde desea agregar el controlador de eventos, agregue un atributo que coincida con el nombre del evento que desea controlar. A continuación, especifique el valor de ese atributo como el nombre del método del controlador de eventos que definió en el archivo de código subyacente de la página XAML. Para obtener más información, consulte XAML en WPF o Información general sobre eventos enrutados.
Vea también
.NET Desktop feedback