WPF приложение на MVVM с помощта на PRISM 6 и Autofac
Тази статия показва пример за създаване на WPF приложение, базирано на шаблона за проектиране на MVVM. Базиран е на PRISM 6 като MVVM рамка и Autofac като DI контейнер.
Създайте проект в Visual Studio
Ще се опитам да обобщя основната идея много накратко, така че нека да преминем направо към същината. За проекта изберете WPF приложение:

Можете да изберете името на проекта по свое усмотрение, като винаги се придържам към принципите, описани в предишната статия. След като Visual Studio създаде проекта, ще изтрия файла MainWindow.xaml в името на експеримента.
Инсталиране на Nuget пакети
За да изградя приложение според принципите на MVVM, имам нужда от рамка, която прилага този принцип. Освен това самата рамка може да бъде написана на ръка или създадена от разработчици на трети страни. Ще взема рамката PRISM, която беше разработена от Microsoft, но по-късно беше дадена на OpenSource от други разработчици, които, трябва да кажа, честно, продължават да увеличават функционалността.
Следващият по ред е DI контейнерът. В моя случай това е Autofac. Веднага ще инсталирам Prism.Autofac, който ще инсталира самия Autofac като зависимост:
Главен прозорец и неговия ViewModel
Сега е време да създадете нов главен прозорец на програмата. Просто така се случва, че за WPF приложение обикновено използвам името за главния прозорец на Shell. Но преди това създаваме папките Views и ViewModels. Сега създаваме Shell.xaml и ShellViewModel.cs в съответните им папки.


Bootstrapper на Autofac
Създайте Bootstrapper, който наследява от AutofacBootstrapper:
Не е трудно да се види, че целият код се състои от предефиниране на претоварвания на методи, където зависимостите, от които се нуждаем, се заместват.
Тъй като сега ще се използва нашето приложение за стартиранеBootstrapper, трябва да премахнете "входната точка" от файла App.xaml.

Изтрийте атрибута, маркиран в изображението.
ShellViewModel.cs
За да може нашият ShellViewModel да се превърне в истински ViewModel за нашия изглед, трябва да наследим клас от BindableBase, който е реализация на интерфейса INotifyPropertyChanged. Добавих също свойството DisplayName, което ще използвам като заглавие на моето приложение.
Време е да се захванем с изгледа Shell. За да може нашият ShellViewModel да стане DataContext обект за нашия Shell, могат да се използват няколко операции. Но първо отворете маркирането Shell.xaml и обвържете свойството Title със свойството DisplayName (от ShellViewModel).
Сега можете, като опция, да напишете следния код във файла App.xaml.cs Code-Behind
Можем да стартираме приложението и ще видим, че заглавието на главния прозорец на програмата ще бъде "WPF PRISM (MVVM) + DI (Autofac)". Но преди да стартираме, трябва да инициализираме нашия Bootstrapper в App.xaml.cs.
Сега можете да бягате

Не много информативна презентация, но фактът остава следният: MVVM работи! Все пак трябва да се каже, че PRISM предоставя по-естетична опция за обвързване на View и ViewModel. Премахнете реда от файла Shell.xaml.cs
Освен това бих препоръчал никога повече да не го отваряте, когато използвате подхода MVVM.
Нека приемем различен подход. За да направите това, съдържанието на файла Shell.xaml в съответствие с списъка.
Можете да стартирате приложението. Резултатът ще бъде същият като преди, но сега файлът Code-Behind е чист и подреден!

Заключение
Малко вероятно е създаденият проект да се счита за основа за конкретно приложение. Това е само началото. За дапроектът се превърна в проект, трябва да се направят много допълнителни жестове, за да се подготви инфраструктурата на решението (решението). Но броят на жестовете и тяхната същност вече зависи от това какъв тип приложение искате да създадете: модулно приложение, MDI приложение, SDI приложение и т.н. Едно нещо, което мога да кажа е, че PRISM предоставя всички тези функции.