Привязать методы к кнопкам, созданным во время выполнения программы

У меня есть программа на Avalonia C#, позволяющая с помощью перетаскивания выносить на Canvas новые кнопки. Далее к этим кнопкам планируется привязывать некоторые методы. Например, кнопка должна будет изменять какое-то значение в базе данных, открывать новое окно и тому подобное. Вопрос состоит в следующем: как привязать к кнопкам, созданным таким образом, методы? Вот код, реализующий перетаскивание:

using Avalonia;
using Avalonia.Controls;
using Avalonia.Input;
using Avalonia.Media;

namespace DragDrop2.Views;

public partial class MainView : UserControl
{
    public MainView()
    {
        InitializeComponent();
        AddHandler(DragDrop.DragOverEvent, DragOver);
        AddHandler(DragDrop.DropEvent, Drop);
    }

    private async void OnPointerPressed(object? sender, PointerPressedEventArgs e)
    {
        var dragData = new DataObject();
        Button button;
        CheckBox checkBox;
        if (sender is Avalonia.Controls.Control control)
        {
            if (control.Name == "addButtonLabel")
            {
                button = new();
                button.Content = "Key";
                dragData.Set("control", button);
            }
            else if (control.Name == "addCheckBoxLabel")
            {
                checkBox = new();
                checkBox.Content = "checkBox";
                dragData.Set("control", checkBox);
            }
            else return;
        }
        else return;
        var result = await DragDrop.DoDragDrop(e, dragData, DragDropEffects.Move);
    }

    private void DragOver(object? sender, DragEventArgs e)
    {
        e.DragEffects = DragDropEffects.Move;
        var data = e.Data.Get("control");
        if(!canvas.Children.Contains((Control)data))
            canvas.Children.Add((Control)data);
        var mousePos = e.GetPosition(canvas);
        Canvas.SetLeft((Control)data, mousePos.X);
        Canvas.SetTop((Control)data, mousePos.Y);
    }

    private void Drop(object? sender, DragEventArgs e)
    {
        
    }
}

Ответы (0 шт):