IronRuby и обработка событий пользовательского интерфейса XAML
-
10-07-2019 - |
Вопрос
Какой самый краткий и краткий способ добавления обработчиков событий в элементы пользовательского интерфейса в 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
Не связан с StackOverflow