IronRuby и обработка событий пользовательского интерфейса XAML

StackOverflow https://stackoverflow.com/questions/1821866

Вопрос

Какой самый краткий и краткий способ добавления обработчиков событий в элементы пользовательского интерфейса в XAML с помощью сценария IronRuby? Предположение: код для добавления обработчика события будет написан в сценарии IronRuby, а код для обработки события будет в том же сценарии IronRuby.

Мне нужен эквивалент следующего кода, но в IronRuby. Обработка простого события нажатия кнопки button1.

public partial class Window1 : Window
{
    public Window1()
    {
        InitializeComponent();
        button1.Click += new RoutedEventHandler(button1_Click);
    }

    void button1_Click(object sender, RoutedEventArgs e)
    {
        MessageBox.Show("Hello World!");
    }
}
Это было полезно?

Решение

Насколько я знаю, события .NET отображаются как методы, принимающие блоки в IronRuby. Итак, вы можете написать:

button1.click do |sender, args|
    MessageBox.show("Hello World!")
end

Это охватывает другие варианты.

Другие советы

Вы также можете использовать add, чтобы подписаться на событие, если оно имеет больше смысла для вас.

p = Proc.new do |sender, args| 
  MessageBox.show("Hello  World!")
end

# Subscribe
button1.click.add p

# Unsubscribe
button1.click.remove p
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top