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

Jak przesłać wartości bool z jednego okna WPF do drugiego.

0 głosów
124 wizyt
pytanie zadane 8 grudnia 2018 w C# i .NET przez Dany90 Nowicjusz (170 p.)

Cześć.

Tworzę prostą grę kółko i krzyżyk z wykorzystanie WPF.

Być może problem mam trywialny, a nie mogę go rozwiązać od paru dni.

Otóż w mojej aplikacji po naciśnięciu button'a Menu otwiera się nowe drugie okno i w tym oknie za pomocą RadioButton chciałbym zmienić opcje, które powodowałoby zmianę rozpoczęcia gry z kółka na krzyżyk w pierwszym oknie.

Inaczej mówiąc jak przesłać zmienną o typie bool z jednego okna do drugiego?

Próbowałem:

Menu.xaml.cs

 public static bool IsCross = true;

 public void player_2_cross_Checked(object sender, RoutedEventArgs e)
        {

            this.player_1_cross.IsChecked = false;

            IsCross = (bool)this.player_1_cross.IsChecked;

       }

 

W oknie  MainMenu próbuje odwołać się Menu.IsCross wartość nie podlega zmianie, wartość bool przyjmują taką z jaką została zainicjalizowana.

komentarz 8 grudnia 2018 przez NowyUrzydgownig Gaduła (3,610 p.)
Stwórz klasę bazową z metodami odbierania i wysyłania wiadomości po której będą dziedziczyć inne klasy. Wszystkie instancje przechowuj w jakiejś klasie i w niej obsługuj wysyłanie wiadomości.
komentarz 9 grudnia 2018 przez Dany90 Nowicjusz (170 p.)
Dzięki za odpowiedź.

Niestety nie do końca rozumiem jak mam to zrobić. Potrzebowałbym więcej szczegółów

Jak mam stworzyć klasę bazową w WPF, gdy klasą bazową do funkcjonowania musi być klasa Window?
komentarz 9 grudnia 2018 przez NowyUrzydgownig Gaduła (3,610 p.)
Nie do końca o to mi chodziło. Możesz np. stworzyć interfejs w którym będziesz miał metody wysyłania i odbierania wiadomości. I wszystkie te klasy, które implementują interfejs trzymasz w jednej klasie, która nimi zarządza. Możesz zastosować do tego celu tzw. Mediator. Poczytaj też o flow w MVVM, możesz też użyć np. Messengera.
komentarz 10 grudnia 2018 przez Siemił Bywalec (2,340 p.)
edycja 10 grudnia 2018 przez Siemił

Cześć, masz dialogowe okno (otwierasz je jako showdialog())? Jeśli tak to zmienną możesz przekazać podczas zamykania do właściwości 'Tag' okna. potem w metodzie w której otwierasz okno badasz czy masz coś w tagu i rzutujesz na bool. Jeśli okno nie jest dialogowe to przekazać boola musisz za pomocą zdarzenia, co wymaga trochę więcej pracy.

Tutaj masz przykład jak przekazać obiekt z okna do okna głównego.

komentarz 19 grudnia 2018 przez Dany90 Nowicjusz (170 p.)
Dzięki.

Na razie odszedłem od WPF. Jak wrócę do niego to sprawdzę.

1 odpowiedź

0 głosów
odpowiedź 7 stycznia przez Rout Bywalec (2,030 p.)

Poczytaj sobie o Event Aggregator. W skrócie polega to na rozgłaszaniu wiadomości przez publishera i nasłuchiwaniu przez subscriberów. W twoim przypadku jedno okno wysyła wiadomość drugie nasłuchuje.

Podobne pytania

0 głosów
1 odpowiedź 158 wizyt
pytanie zadane 21 kwietnia 2017 w C# i .NET przez BlackMoon Obywatel (1,750 p.)
0 głosów
0 odpowiedzi 57 wizyt
pytanie zadane 16 kwietnia w C# i .NET przez marcinconn Obywatel (1,320 p.)
–2 głosów
1 odpowiedź 124 wizyt
pytanie zadane 13 listopada 2018 w C# i .NET przez marcinconn Obywatel (1,320 p.)
Porady nie od parady
Publikując kody źródłowe korzystaj ze specjalnego bloczku koloryzującego składnię (przycisk z napisem code w edytorze). Nie zapomnij o ustawieniu odpowiedniego języka z rozwijanego menu oraz czytelnym formatowaniu kodu.Przycisk code

65,687 zapytań

112,325 odpowiedzi

237,063 komentarzy

46,660 pasjonatów

Przeglądających: 244
Pasjonatów: 11 Gości: 233

Motyw:

Akcja Pajacyk

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

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...