• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Połączenie funkcji z innej klasy z przyciskiem button

Aruba Cloud VPS - 50% taniej przez 3 miesiące!
0 głosów
401 wizyt
pytanie zadane 3 września 2020 w C# przez Jacob7 Użytkownik (540 p.)
edycja 3 września 2020 przez Jacob7

Cześć. Robię kalkulator w c# i wpf. Jak dodaję metodę do przycisku to automatycznie jest ona tworzona w klasie głównej klasie public partial class MainWindow.

<Button x:Name="button_number0"  Click="Button_Number0_Click">
 </Button>
public partial class MainWindow : Window
{
        private void Button_Number0_Click(object sender, RoutedEventArgs e)
        {
                PierwszaLiczbaString += "0";
                PierwszaLiczbaDouble = Double.Parse(PierwszaLiczbaString);
                pierwsza_liczba.Text = PierwszaLiczbaString;
        }
}

Czy jest możliwość żebym funkcję Button_Number0_Click stworzył w innej klasie na przykład class Przyciski i połączył z tym przyciskiem?
Generalnie chciałbym mieć metody które są wywoływane przy kliknięciu przycisków w różnych klasach, a nie w jednej MainWindow, czy można to jakoś zrobić?

komentarz 4 września 2020 przez DarthMazut Bywalec (2,990 p.)
Możesz spróbować partial class, niestety nie jestem w stanie sprawdzić czy zadziała :(
Daj znać jeśli będziesz testował takie rozwiązanie. :)

1 odpowiedź

+1 głos
odpowiedź 4 września 2020 przez Siemił Mądrala (7,380 p.)
wybrane 14 października 2020 przez Jacob7
 
Najlepsza

Nie da się. Co potwierdza kompilator.

Ale jak chcesz mieć funkcję w różnych klasach zamiast zdarzenia(Event) użyj polecenia (Command). 

1) Tworzysz sobie takie polecenie jak np Add:

    public class Add : ICommand
    {
        public event EventHandler CanExecuteChanged;

        public bool CanExecute(object parameter)
        {
            return true;
        }

        public void Execute(object parameter)
        {
            MessageBox.Show("Add something up");
        }
    }

2) Następnie tworzysz klasę która będzie przechowywać te polecenia np Addition:

    public class Addition
    {
        public ICommand Add
        {
            get
            {
                return new Add();
            }
        }
    }

3) Zostało jeszcze osadzenie klasy w kontekscie:

...
        <Button Content="Add" Command="{Binding Add}" >
            <Button.DataContext>
                <local:Addition/>
            </Button.DataContext>
        </Button>
...

Epilog) Możesz w różnych przyciskach osadzać różne klasy. Albo stworzyć jedną klasę która będzie przechowywać wszystkie polecenia. Wtedy należało by stworzyć klasę w kontekscie wyższego elementu. Jak chcesz się czegoś więcej dowiedzieć na ten temat poczytaj o wzorcu MVVM.

Podobne pytania

0 głosów
0 odpowiedzi 385 wizyt
pytanie zadane 17 grudnia 2021 w C# przez Ilmefy Obywatel (1,950 p.)
0 głosów
1 odpowiedź 112 wizyt
pytanie zadane 5 lutego 2020 w C# przez wo2324 Nowicjusz (200 p.)
0 głosów
1 odpowiedź 375 wizyt
pytanie zadane 28 grudnia 2019 w C# przez PH03NIX Mądrala (6,130 p.)

93,186 zapytań

142,199 odpowiedzi

322,009 komentarzy

62,514 pasjonatów

Advent of Code 2024

Top 15 użytkowników

  1. 2127p. - dia-Chann
  2. 2092p. - Łukasz Piwowar
  3. 2079p. - Łukasz Eckert
  4. 2037p. - Tomasz Bielak
  5. 2006p. - rucin93
  6. 2005p. - Łukasz Siedlecki
  7. 1964p. - CC PL
  8. 1835p. - Adrian Wieprzkowicz
  9. 1785p. - Michal Drewniak
  10. 1744p. - rafalszastok
  11. 1734p. - Anonim 3619784
  12. 1684p. - Mikbac
  13. 1520p. - Marcin Putra
  14. 1480p. - ssynowiec
  15. 1474p. - Dawid128
Szczegóły i pełne wyniki

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...