Żeby podejść do Prism'a i zrozumieć go prawidłowo trzeba najpierw rozmieć ideę wykorzystania kontenera IoC do wstrzykiwania zależności. Następnie zrozumieć ideę Event aggregatora, którego wykorzystuje się w Prism'ie do strzelania zdarzeniami pomiędzy niepowiązanymi klasami czyli takimi, których nie wiążą wspólne "sztywne" referencje. Dzięki temu viewmodel jednego okna może strzelić eventem że się zamyka, a "czterdzieści jeden klas dalej" może być viewmodel, który subsktybuje taki event i na niego reaguje przy czym te viewmodele nie wiedzą w ogóle o swoim istnieniu. Normalnie musiałbyś bawić się w przekazywanie informacji przez czterdzieści klas, a dzięki event aggregatorowi nie musisz.
Podsumowując Prism jest naprawdę świetnym frameworkiem ale z nim jest trochę tak jak z nauką Qt. Ma dość duży próg wejścia. Poczytaj o:
-
kontererach IoC: Unity Container od MS albo Ninject, to chyba takie najbardziej znane przy czym nadmienić należy, że jest ich trochę.
-
event aggregatorach: żeby zrozumieć ideę tego co pod spodem siedzi zainteresuj się wzorcem obserwatora, bo to jest bardzo podobne działanie. Pomocne będzie zrozumienie działania interfejsów
IObserver
i IObservable
. Dzięki tym dwóm rzeczom możesz sobie samemu posklejać takiego swojego event aggregatora, a przy okazji zrozumieć o co w tym chodzi. Chodzi po prostu o to, że jedna klasa subskrybuje zdarzenie i zaczyna obserwacje czy inna klasa czasami nie zrobi Publish
tego zdarzenia.
Bez zrozumienia tych dwóch rzeczy pełnych możliwości Prisma nie wykorzystasz, a uwierz mi: z Prismem naprawdę oszczędzisz sobie pisania różnych dziwacznych rzeczy.
Polecam, prócz samego Prisma do pojedynczych projektów, zaciągnąć sobie do samego Visuala coś co się zowie Prism Template Pack: https://marketplace.visualstudio.com/items?itemName=BrianLagunas.PrismTemplatePack Masz to w Visualu w Tools -> Extensions and Updates...
Zrozum IoC i wzorzec obserwatora, a światełko się zapali. Bez tego nie wiem czy korki z Prisma coś Ci dadzą.
To taka wiesz... darmowa w sumie porada, bo @karolinaa to by od razu chciała 100,00zł :)