[C# wpf]Singleton a główne okno

Czy istnieje możliwość stworzenia singleton’a z głównego okna (MainWindow.xaml.cs)? Jeśli tak to w jaki sposób?

Dziękuję za wszelkie podpowiedzi.

Okno nie powinno być singletonem, nie od tego one są, ale nic nie stoi na przeszkodzie ręcznie ustawić Application.MainWindow w zdarzeniu Application.Startup Twojego głównego obiektu(klasy) aplikacji. Ew. odwołuj się do głównego okna przez Application.MainWindow rzutując go na swoją klasę i ignorując programowe zabezpieczanie przed stworzeniem dwóch instancji.

To czy może istnieje inna możliwość by odwoływać się do metod tudzież pól bez tworzenia nowych obiektów. Coś na zasadzie globalnych metod, zmiennych, tylko w sposób jak najbardziej poprawny. Może pytam się o głupoty jednak próbuję pisać od niedawna.

Najpierw to upewnij się dwa razy, czy potrzebujesz globalnych metod i zmiennych. Przeważnie to nie jest potrzebne(co więcej, przeważnie to nie jest pożądane). A jeśli nadal jesteś pewien, że potrzebujesz czegoś takiego, to dopóki to nie jest strasznie skomplikowane(nie ma wielu zależności między częściami składowymi) masz do dyspozycji statyczne pola, właściwości i metody, wykorzystaj je. Jeśli nadal chcesz mieć singleton, to po prostu go stwórz.

Na 90% rozwiązaniem Twojego problemu jest przeniesienie kodu z MainWindow do innej klasy.

I tak dokładnie zrobiłem. Napotkałem jednak problem jak powiadomić np. textBlock’a z poziomu innej klasy o konieczności zmiany wartości.

Czy do tego celu najlepsze będą zdarzenia? Czy konieczne są jakieś zabezpieczenia przed wątkami?

W jaki sposób wygląda stworzenie takiego poprawnego eventu?

Musisz zaimplementować INotifyPropertyChanged i reszta będzie obsłużona za Ciebie(o ile bindingi masz poprawnie ustawione).