Страницы

Поиск по вопросам

вторник, 2 апреля 2019 г.

Как передать дополнительную переменную в функцию нажатия button?

Как передать дополнительную переменную в функцию?
button.Click += Click_2;
void Click_2(object sender, RoutedEventArgs e)
Например
void Click_2(object sender, RoutedEventArgs e, string str)


Ответ

Через замыкание:
button.Click += (o, e) => Click_2(o, e, "foo");
Или через тэг:
button.Tag = "foo"; button.Click += Click_2;
void Click_2(object sender, RoutedEventArgs e) { var button = (FrameworkElement)sender; var str = (string)button.Tag; }
Конкретно для кнопок и клика есть возможность использовать команды:
button.CommandParameter = "foo"; button.Command = new DelegateCommand(Click_2);
void Click_2(string str) { }
Здесь я использую DelegateCommand из библиотеки Prism, но есть и альтернативы (например, RelayCommand из библиотеки MmvmLight).

Комментариев нет:

Отправить комментарий