Zaczynam swoją pierwszą podróż w świat Prism v4/MVVM z MEF & WPF. Z powodzeniem zbudowałem powłokę i używając MEF, jestem w stanie odkryć i zainicjować moduły. Nie jestem jednak pewien, w jaki sposób można zapewnić nawigację do widoków odsłoniętych przez te moduły.Prism/MVVM (MEF/WPF): Ekspozycja nawigacji [menu na przykład] z modułów
Na przykład, powiedzmy, że jeden z modułów udostępnia trzy widoki i chcę wyświetlić nawigację do tych widoków w menu sterowania. Do tej pory z powodzeniem wyeksponowałem widok oparty na MenuItem
i ten MenuItem
zawiera elementy sterujące podrzędne, które zapewniają hierarchię poleceń, która może być użyta. Wspaniały.
Chodzi o to, że czuje się źle. Teraz stwierdzam w swoim module, że nawigacja (a więc i powłoka) MUSI wspierać obsługę menu. Co jeśli chciałbym zmienić na ToolBar
lub nawet Ribbon
. Musiałbym wtedy zmienić wszystkie moje moduły, aby odsłonić odpowiednie typy kontrolne dla powłoki.
Rozejrzałem się i na niektórych witrynach jest mowa o "usłudze" zapewniającej nawigację, przy czym podczas inicjalizacji modułu opcje nawigacji są dodawane do usługi, która z kolei jest używana przez powłokę do wyświetlenia tę nawigację w dowolnym formacie, jakiego chce (ToolBar
, TreeView
, Ribbon
, MenuItem
itd.) - ale nie mogę znaleźć przykładów takiego działania.
Aby przedstawić to wszystko w perspektywie, ostatecznie szukam możliwości wyboru widoków z menu i/lub innej kontroli nawigacji (prawdopodobnie Ribbon
), a następnie otworzyć te widoki na żądanie w TabControl. Już udało mi się stworzyć widoki w TabControl
w czasie inicjalizacji modułu, teraz potrzebuję następnego kroku.
Co muszę wiedzieć, to: jaki byłby właściwy sposób na wyeksponowanie opcji nawigacji w taki sposób, aby nie wymagać obsługi określonej kontroli przez powłokę, a jeśli usługa jest drogą do zrobienia, jak by to połączyć w pryzmat/wzorce MVVM.
Z góry dziękujemy za wszelki wgląd, jaki możesz zaoferować.
Podobają mi się, ponieważ jest to całkowicie ogólna opcja, która pozostawia powłokę, aby zdecydować, w jaki sposób będzie wyświetlać przedmioty. To powiedziawszy, miałem dalsze przemyślenia na ten temat i faktycznie przeszedłem inną drogę, którą będę dokumentować jako oddzielną odpowiedź. Dzięki. –
Nie zapomnij, że możesz ustawić 'MenuItemViewModel' dopasowany do MenuItems (można sprawdzić lub mieć podpozycje). Będziesz musiał stworzyć bardziej specyficzny interfejs. Ale to był przykład. Baw się dobrze. – SandRock