Aracılığıyla paylaş


Nasıl yapılır: Kod Kullanarak bir Olay İşleyicisi Ekleme

Bu örnekte, kod kullanarak bir öğeye olay işleyicisi ekleme gösterilmektedir.

Bir XAML öğesine olay işleyicisi eklemek istiyorsanız ve öğesini içeren işaretleme sayfası zaten yüklenmişse, kod kullanarak işleyiciyi eklemeniz gerekir. Alternatif olarak, bir uygulama için öğe ağacını tamamen kod kullanarak oluşturuyorsanız ve XAML kullanarak herhangi bir öğe bildirmiyorsanız, belirli yöntemleri çağırarak, oluşturduğunuz öğe ağacına olay işleyicileri ekleyebilirsiniz.

Örnek

Aşağıdaki örnek, başlangıçta XAML'de tanımlanan mevcut bir sayfaya yeni Button bir ekler. Arka planda kod dosyası bir olay işleyicisi yöntemi uygular ve ardından bu yöntemi üzerinde Buttonyeni bir olay işleyicisi olarak ekler.

C# örneği, bir olaya işleyici atamak için işlecini kullanır += . Bu, ortak dil çalışma zamanı (CLR) olay işleme modelinde işleyici atamak için kullanılan işleçle aynıdır. Microsoft Visual Basic, olay işleyicileri ekleme aracı olarak bu işleci desteklemez. Bunun yerine iki teknikten birini gerektirir:

  • Olay işleyicisi uygulamasına AddHandler başvurmak için yöntemini bir AddressOf işleçle birlikte kullanın.

  • Handles Olay işleyicisi tanımının bir parçası olarak anahtar sözcüğünü kullanın. Bu teknik burada gösterilmez; bkz. Visual Basic ve WPF Olay İşleme.

<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

Dekont

Başlangıçta ayrıştırılan XAML sayfasına olay işleyicisi eklemek çok daha basittir. Olay işleyicisini eklemek istediğiniz nesne öğesinin içinde, işlemek istediğiniz olayın adıyla eşleşen bir öznitelik ekleyin. Ardından, XAML sayfasının arka planda kod dosyasında tanımladığınız olay işleyici yönteminin adı olarak bu özniteliğin değerini belirtin. Daha fazla bilgi için bkz . WPF'de XAML veya Yönlendirilmiş Olaylara Genel Bakış.

Ayrıca bkz.