WPF приложение на MVVM с помощта на PRISM 6 и Autofac

Тази статия показва пример за създаване на WPF приложение, базирано на шаблона за проектиране на MVVM. Базиран е на PRISM 6 като MVVM рамка и Autofac като DI контейнер.

Създайте проект в Visual Studio

Ще се опитам да обобщя основната идея много накратко, така че нека да преминем направо към същината. За проекта изберете WPF приложение:

autofac

Можете да изберете името на проекта по свое усмотрение, като винаги се придържам към принципите, описани в предишната статия. След като Visual Studio създаде проекта, ще изтрия файла MainWindow.xaml в името на експеримента.

Инсталиране на Nuget пакети

За да изградя приложение според принципите на MVVM, имам нужда от рамка, която прилага този принцип. Освен това самата рамка може да бъде написана на ръка или създадена от разработчици на трети страни. Ще взема рамката PRISM, която беше разработена от Microsoft, но по-късно беше дадена на OpenSource от други разработчици, които, трябва да кажа, честно, продължават да увеличават функционалността.

Следващият по ред е DI контейнерът. В моя случай това е Autofac. Веднага ще инсталирам Prism.Autofac, който ще инсталира самия Autofac като зависимост:

Главен прозорец и неговия ViewModel

Сега е време да създадете нов главен прозорец на програмата. Просто така се случва, че за WPF приложение обикновено използвам името за главния прозорец на Shell. Но преди това създаваме папките Views и ViewModels. Сега създаваме Shell.xaml и ShellViewModel.cs в съответните им папки.

mvvm

mvvm

Bootstrapper на Autofac

Създайте Bootstrapper, който наследява от AutofacBootstrapper:

Не е трудно да се види, че целият код се състои от предефиниране на претоварвания на методи, където зависимостите, от които се нуждаем, се заместват.

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

autofac

Изтрийте атрибута, маркиран в изображението.

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 предоставя всички тези функции.