Страницы

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

пятница, 31 января 2020 г.

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

#c_sharp #wpf


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

button.Click += Click_2;

void Click_2(object sender, RoutedEventArgs e)


Например

void Click_2(object sender, RoutedEventArgs e, string str)

    


Ответы

Ответ 1



Через замыкание: 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).

Ответ 2



button.Tag = str; button.Click += Click_2; void Click_2(object sender, RoutedEventArgs e)

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

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