Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
course_(Windows&Web).docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
4.68 Mб
Скачать

IoC контейнер в mef инкапсулируется классом …

Ответ 1. CompositionContainer

Задача 5.

Вариант 1 Задачи 5.

Укажите особенность пассивной формы инверсии зависимостей:

+ Ответ 1. все нужные сервисы объект получает через свой интерфейс

Ответ 2. объект получает свои зависимости при помощи вспомогательных объектов

Ответ 3. все нужные сервисы объект получает из базового класса

Вариант 2 Задачи 5.

Укажите особенность активной формы инверсии зависимостей:

Ответ 1. все нужные сервисы объект получает через свой интерфейс

+Ответ 2. объект получает свои зависимости при помощи вспомогательных объектов

Ответ 3. все нужные сервисы объект получает из базового класса

Вариант 3 Задачи 5.

Формы инверсии, предполагающая, что зависящий объект будет сам получать свои зависимости при помощи вспомогательных объектов - …

Ответ 1. активная

Литература

  1. WPF Apps With The Model-View-ViewModel Design Pattern http://msdn.microsoft.com/en-us/magazine/dd419663.aspx

  2. Using MEF to Expose Interfaces in Your Silverlight MVVM Apps http://msdn.microsoft.com/en-us/magazine/gg535672.aspx

  3. Managed Extensibility Framework http://mef.codeplex.com/

Лекция 12. Особенности отображения диалоговых окон в WPF и Silverlight версиях приложения.

Краткая аннотация лекции: в лекции рассматривается реализация логики отображения и управления окнами в соответствии с шаблоном MVVM для максимального повторного использования кода между Silverlight и WPF.

Цель лекции: показать читателям на примере фрагментов кода механизм отображения диалоговых окон в многослойном кроссплатформенном Silverlight/WPF MVVM приложении.

Понятие ICloseableViewModel и IChildViewModel

В предыдущей лекции было введено понятие базовой модели представления, и определяющего её интерфейса, IViewModel. Получившееся простейшее приложение состояло из главной модели представления, MainViewModel, и соответствующего ей представления, MainView.

Сложно представить себе программу, обходящуюся одним главным окном. В любом MVVM приложении необходимо не только взаимодействовать с сервисами на уровне главной модели представления, но и отображать дополнительную информацию в диалоговых окнах. В соответствии с шаблоном MVVM вся логика приложения должна находиться на уровне модели представления, а значит должна быть возможность из произвольной модели представления инициировать открытие дочерней модели представления.

Логично ввести понятие закрываемой модели представления, которая может быть отображена вызовом метода Show() и закрыта вызовом метода Close():

1: /// <summary>

2: /// Interface of a View Model that can be closed

3: /// </summary>

4: public interface ICloseableViewModel : IViewModel

5: {

6: /// <summary>

7: /// Shows whether View Model has been closed

8: /// </summary>

9: bool IsClosed { get; }

10:

11: /// <summary>

12: /// Event raised when the View Model is closed

13: /// </summary>

14: event EventHandler Closed;

15:

16: /// <summary>

17: /// Closes View Model

18: /// </summary>

19: void Close();

20:

21: /// <summary>

22: /// Registers View Model to be shown

23: /// </summary>

24: void Show();

25: }

Флаг IsClosed сообщает о том, была ли модель представления уже закрыта, а событие Close инициируется как раз в момент закрытия.

Для дальнейшего расширения иерархии интерфейсов моделей представления необходимо ввести интерфейс модели представления с заголовком:

1: /// <summary>

2: /// Interface of a View Model that has a title

3: /// </summary>

4: public interface IEntitledViewModel : IViewModel

5: {

6: /// <summary>

7: /// View Model's title

8: /// </summary>

9: string Title { get; }

10: }

Спецификацией понятия закрываемой модели представления будет модель представления дочернего окна, имеющая заголовок:

1: /// <summary>

2: /// Interface of Child View's View Model

3: /// </summary>

4: public interface IChildViewModel

5: : ICloseableViewModel, IEntitledViewModel

6: {

7: //

8: }

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]