2010-03-01 10 views
5

Obecnie uczę się, jak zaawansowanego korzystania z WPF za pośrednictwem projektu Prism (Composite WPF).StockTrader RI> Kontrolery, prezentery, WTF?

oglądam wiele filmów i przykłady i aplikacji demo StockTraderRI sprawia mi zadać to pytanie:

Jaka jest dokładna rola każdej z następujących części?

  • SomethingService: Ok, to jest coś, do zarządzania danymi
  • SomethingView: Ok, to jest to, co jest wyświetlane
  • SomethingPresentationModel: Ok, to zawiera dane i polecenia dla widoku do wiązania (odpowiednik ViewModel).
  • SomethingPresenter: I naprawdę nie rozumiem, że to wykorzystanie
  • SomethingController: Nie rozumiem też

Widziałem, że prezenter i kontroler nie są konieczne, ale chciałbym zrozumieć, dlaczego są one tutaj . Czy ktoś może mi powiedzieć, że chce ich użyć?

+1

zgadzam, rzeczy mylące niecodzienna bałagan. – Pierreten

Odpowiedz

7

Miałem exactly the same problem kiedy pierwszy raz przeszedłem przez Prism.

Controllers w zasadzie logiki, który obejmuje cały moduł, a Presenters są logiki, który jest specyficzny dla View.

Na przykład: Presenter odpowie na polecenie powodujące wyłączenie przycisku w widoku. Numer Controller odpowie na polecenie, które spowoduje całkowitą zmianę View (i Presenter) lub załadowanie innego widoku/prezentera w innym regionie w powłoce modułu.

Edit: gdy chodzi o ich użyciu, można pominąć Controller całkowicie, jeśli nie masz potrzebę orkiestracji wymienionych powyżej. Najprostsza aplikacja będzie tylko mieć:

  • Module: rejestruje widoku/prezentera do Region
  • Presenter: reaguje na polecenia z widoku i modyfikuje ViewModel.
  • ViewModel: adapter pomiędzy Presenter i View który implementuje INotifyPropertyChanged
  • View: wiąże się ViewModel i wyświetla UI

Edit: chodzi o Presenter vs ViewModel, większość logiki powinny być w Presenter. Pomyśl o swoim ViewModelu jako o logice twojego widoku, ale o tym, że prezenter ma do czynienia z konsekwencjami interakcji z widokiem.

Na przykład użytkownik klika przycisk "Szukaj" w swoim View. Wyzwala to ICommand, obsługiwaną przez Twoją Presenter.Presenter rozpoczyna wyszukiwanie i ustawia właściwość ViewModel.IsSearching, która uruchamia powiadomienie PropertyChanged dla CanSearch. CanSearch jest właściwością tylko do odczytu opartą na kilku innych właściwościach (np. IsSearchEnabled && !IsSearching). Przycisk "Szukaj" w View ma właściwość Enabled powiązaną z CanSearch.

+0

Och, więc to tylko oddzielenie tego, co dzieje się w bieżącym widoku (Presenter) i co dzieje się w module (Controller). Rzeczywiście robię wszystkie rzeczy logiczne w ViewModel. Czy to źle, czy jest to tylko strategiczny wybór? – SandRock

+0

'Pryzmat' to tylko zalecenie. Powiedziawszy to, zaktualizowałem swoją odpowiedź przy pomocy niektórych informacji dotyczących VM i prezentera. –

+0

Wspaniale, wszystko jest teraz jasne w mojej głowie. Spróbuję tego teraz. Dziękuję za rozmowę :) – SandRock

0

Moim zdaniem kontrolera w tym przypadku odnosi się do Application Controller

+0

Jest to prawdziwe w przypadku Prism, jeśli istnieje tylko jeden moduł. –

Powiązane problemy