Share via


Postupy: Přidání obslužné rutiny události pomocí kódu

Tento příklad ukazuje, jak přidat obslužnou rutinu události do elementu pomocí kódu.

Pokud chcete přidat obslužnou rutinu události do elementu XAML a stránka značek obsahující prvek již byla načtena, je nutné přidat obslužnou rutinu pomocí kódu. Případně pokud vytváříte strom elementů pro aplikaci zcela pomocí kódu a neklaračně žádné prvky pomocí XAML, můžete volat konkrétní metody pro přidání obslužných rutin událostí do vytvořeného stromu elementů.

Příklad

Následující příklad přidá novou Button na existující stránku, která je původně definována v XAML. Soubor s kódem implementuje metodu obslužné rutiny události a pak tuto metodu přidá jako novou obslužnou rutinu události na .Button

Příklad jazyka += C# používá operátor k přiřazení obslužné rutiny k události. Jedná se o stejný operátor, který se používá k přiřazení obslužné rutiny v modelu zpracování událostí CLR (Common Language Runtime). Microsoft Visual Basic nepodporuje tento operátor jako prostředek přidání obslužných rutin událostí. Místo toho vyžaduje jednu ze dvou technik:

  • Použijte metodu AddHandler společně s operátorem AddressOf pro odkaz na implementaci obslužné rutiny události.

  • Handles Klíčové slovo použijte jako součást definice obslužné rutiny události. Tato technika zde není uvedena; Viz Zpracování událostí jazyka Visual Basic a 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

Poznámka:

Přidání obslužné rutiny události na původně analyzované stránce XAML je mnohem jednodušší. V elementu objektu, do kterého chcete přidat obslužnou rutinu události, přidejte atribut, který odpovídá názvu události, kterou chcete zpracovat. Pak zadejte hodnotu tohoto atributu jako název metody obslužné rutiny události, kterou jste definovali v souboru kódu stránky XAML. Další informace najdete v tématu XAML v přehledu WPF nebo směrovaných událostí.

Viz také