WPF - jak dobrze zarządzać okienkami?

0

Dzień dobry mam kilka pytań co do WPF. Pisałem aplikację dla jednej firmy na praktyki, miała się ona łączyć z serwerem i wysłać odpowiednie zapytania i prezentować odpowiedzi serwera. Potrzebna była masa okienek i rozwiązałem ten problem za pomocą fukncji która przepisywała adresy okienek do tablicy okienek.
https://github.com/Akihito759/ArcPrime <- tutaj w klasie display. Zrobiłem tak ponieważ nie potrafiłem przy akcji zmodyfikować funkcji abym mógł zmieniać zawartość okienk. Podejrzeam, że jest to zrobione okropnie. Moje pytanie jest następujące jak zrobić to poprawie i ładnie? Pondato jaką lekturę dotycząca WPF byście polecili ? Zależy mi właśnie na tym jak pisać całą logikę kodu i jak napisać odpowiednio wyświetlanie ?

2

Polecam zainteresować się czymś co zowie się IoC Container. Okienek do żadnej tablicy nie trzeba wpisywać. Grunt to mieć ladnie rozplanowany projekt w katalogach i kontenerek IoC do zarządzania wstrzykiwanymi zaleznościami albo i nawet samymi oknami.

Natomiast logikę najlepiej wydelegować o ogóle do osobnego projektu, który będzie dla Ciebie takim modelem danych. Okna i podłączone do nich code behind albo viewmodele, w zależnosci od tego jak mocno korzystasz z mvvm, niech tylko wywołują metody tego modelu. Masz dzięki temu osobny projekt, który można ładnie testować pod kątem samej tylko logiki, nazwijmy to biznesowej.

Dla WPF polecam zastosowanie mvvm.

2

Dziękuję za odpowiedź. Mam jeszcze pytanie czy aktualizacja po danych poprzez nazwatextbox.text jest najbardziej poprawna?

To zależy z jakiego podejścia korzystasz:

  • Jeżeli programujesz zdarzeniowo w code-behind, tak jak się to robi w WinForms, to jest to jak najbardziej poprawne.
  • Jeżeli natomiast zdecydowałeś się na mvvm to własność Text jest bindowana do własności udostępnianej przez viewmodel i nazwa kontrolki praktycznie nie jest wtedy używana. Unika się po prostu przesyłania do viewmodelu całych kontrolek, bo wtedy z takiego viewmodelu robi się zwyczajnie drugie code-behind i to nie ma sensu.

PS: Oczywiście w samym tylko code-behind również możesz używać bindowania danych. Wszystko zależy od podejścia.

1 użytkowników online, w tym zalogowanych: 0, gości: 1