Как передать дополнительную переменную в функцию?
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
void Click_2(string str) {
}
Здесь я использую DelegateCommand из библиотеки Prism, но есть и альтернативы (например, RelayCommand из библиотеки MmvmLight).
Комментариев нет:
Отправить комментарий