public int metoda = 0;
...
private void opcja_1(object sender, RoutedEventArgs e)
{
metoda = 1;
}
private void opcja_2(object sender, RoutedEventArgs e)
{
metoda = 2;
}
...
Robiłem tak już wiele razy, wszystko śmiga - po wciśnięciu Przycisk1, wywoływana jest funkcja opcja_1, która przypisuje dla zmiennej metoda, wartość 1.
Analogicznie po wciśnięciu Przycisk2, wywoływana jest f. opcja_2, przypisująca zmiennej metoda, wartość 2.
Jednakże jest to trochę robota na ‘około’, bo oprócz przypisaniu zmiennej ‘metoda’ wartości, funkcje te nie robią zupełnie nic. Czy jest jakaś szansa, żeby w ogóle pozbyć się funkcji opcja_1, opcja_2, a za pomocą wciśnięcia przycisku, wartość była przypisywana bezpośrednio do zmiennej ‘metoda’?
Można pobawić się triggerami*, ale nie do końca od tego są. Można zbindować IsPressed, ale trzeba przy tym strasznie kombinować(i nie jestem pewien czy się da).
Chyba najprościej i najlepiej będzie zrobić jedną metodę do obsługi zdarzenia Click dla wszystkich przycisków i w niej przypisywać wartość zmiennej na podstawie _sender_a. Np. zakładamy, że nazwa buttona odpowiada wartości, która ma być przypisana do zmiennej.
Przekazywanie wartości przez nazwę to nie najlepszy pomysł. To może zamieszać w czytelności kontrolek gdy będziemy odwoływać się do interfaceu. Do przekazania wartości lepiej użyć właściwości Tag.