Как да си направим диалоговия стека преливане на Руски
Да предположим, че има прозорец, в който една маса показва списък, има определен набор от действия, например, нека има за всеки запис "Edit" / "Подробности" / "Delete".
Когато потребителят избира елементът "Изтриване", че е необходимо да се покаже прозорец с някакъв предупредителен текст, както и два възможни действия: "Ok" / "Отказ".
Колкото и да е направил в WinForms приложение:
Като част mvvm. трябва да се направи View. ModelView. т.е. трябва да имаме нещо подобно на Майн. MainViewModel. Dialog. DialogViewModel;
в Главна - ще бъде един бутон, който ще pribindiny до командите на ViewModel. т.е. като това може да изглежда като екипът на "Delete":
Друга възможност е да се направи обществено имущество в DialogViewModel с тип булев и да го настроите на диалог за натискане на всеки от бутоните (ОК / Cansel) за промяна на стойността, в най-добра форма, за да гледате на стойността на този имот. Това е просто бях измъчван от съмнения относно правилността на такъв подход.
Как да направите диалога в WPF използване mvvm?
Послепис код публикуван тук може да съдържа грешки
Въпросът е какво? Ако имате един прост диалогов финес - тя може да бъде на съвестта на \ на макара изцяло vyumodeli. Нарежете всяко време на всички клапи и vyumodeli и за тях, не го правят. От друга страна, ако тези диалози обикновено набират най-малко 5 броя, най-вероятно трябва да се има някъде в отделен клас да кажа само, че в vyumodeli нужда потвърждение с икона \ бутоните текст \. И тук е необходимо да се направи essno нормален модел на диалог и диалог демпфер. - Монк 28 яну '16 в 07:25
@Monk, че ще бъде толкова глупав, че да можете да напишете първата реализирана класа си диалогови прозорци (модел), изглед (View), логически (ViewModel), сега със сигурност е лесно и глупаво. докато не го осъзнават, за себе си и дори не знам как да се направи, вероятно ще трябва да спрете на обществено имущество в диалоговия прозорец и да го проверите от главния прозорец. - Плешив 28 яну '16 в 08:18
Има два варианта:
По-лесен начин, но по-неприятно, ако използвате TDD: Не е нужно да се създаде ViewModel и Виж отделно за диалоговия: само преди изтриване провери отговор на потребителя в диалогов прозорец, като:
Повече време отнема метод, но при спазване на всички канони на MVVM: създаване на ViewModel за вашия диалогов прозорец. В ViewModel създадете събитие, например:
Събитие, за да бъде украсена специален атрибут, който ще го излъчват в други ViewModel-класове, като се спазва принципът на високо сближаване свободно свързване. За да направите това, използвайте месинджър. Можете да опитате Appcelerate.EventBroker. В нашите проекти, използвам името му.
Следваща - създаване на команда, която се отнася до метод, който причинява гореспоменатия случай. Вържи команда към един бутон в диалоговия си.
В прозореца, като се използва метод, украсена атрибут от една и съща пратеникът лечение на това събитие. Методът ще включва код за изпълнение на заличаване.
Вижте в този случай, да създавате, като двойка Window.xaml + Window.cs, която има метода на ShowDialog (), който автоматично ще блокира обажда прозореца с времето за отваряне на диалоговия прозорец.
PS: първият метод не е съвсем правилно, защото е трудно да се провери резултата избран от потребителя в MessageBox.
Добавен Ако искате да използвате този прозорец на различни места в кандидатурата си, да създадете база абстрактен клас, и в наследството VM-класа претоварват необходимите ви качества. Така например, в някои случаи може да се наложи да "дръпне" на няколко събития до потвърждение реагираха малко ViewModel. Всичко зависи от сложността на проекта.
Отговорено 10 февруари '16 в 18:53