41911

WPF приложение с многооконным (MDI) интерфейсом

Лабораторная работа

Информатика, кибернетика и программирование

Часть 1 Необходимо перенести интерфейс редактирования свойств объектов коллекции в отдельное окно. Главное окно приложения должно содержать грид со списком объектов функции открытия сохранения файла коллекции функции удаления объектов из коллекции и вызова окон для редактирования объекта или создания объекта в отдельном окне. При выборе пользователем команды редактирования выделенного объекта в гриде должно появиться отдельное окно для редактирования свойств этого объекта. Должна быть возможность открывать одновременно несколько окон для...

Русский

2013-10-26

19.15 KB

103 чел.

Лабораторная №6. WPF приложение с многооконным (MDI) интерфейсом

Длительность: 8 часов.

Теоретическая часть

Топики для изучения:

  1. Шаблоны обращение контроля (Inversion of Control) и внедрение зависимости (Dependency Injection)
  2. Шаблон «Фабрика» (Factory)

Практическая часть

Используя среду разработки MS Visual Studio 2010 необходимо модифицировать проект, созданный на 5-й л/р, следующим образом.

Часть 1

Необходимо перенести интерфейс редактирования свойств объектов коллекции в отдельное окно. Главное окно приложения должно содержать грид со списком объектов, функции открытия/сохранения файла коллекции, функции удаления объектов из коллекции и вызова окон для редактирования объекта или создания объекта в отдельном окне.

При выборе пользователем команды редактирования выделенного объекта в гриде, должно появиться отдельное окно для редактирования свойств этого объекта. Окно должно быть немодальным, то есть, должна быть возможность переключаться между этим окном и главным окном приложения. Должна быть возможность открывать одновременно несколько окон для редактирования. При попытке редактирования объекта, окно с которым уже открыто, новое окно редактирования не должно создаваться, должно активизироваться уже ранее открытое окно.

При удалении объекта из коллекции ранее открытое окно редактирования этого объекта должно закрываться.

При выборе пользователем команды создания нового объекта, должно появляться окно для редактирования свойств нового объекта. Окно должно отображаться в модальном режиме, то есть, не давать пользователю переключаться на другие окна приложения, пока модальное окно не закрыто. Окно создания нового объекта отличается от окна редактирования наличием кнопок «ОК» и «Отмена», которые, соответственно, подтверждают добавление нового объекта в коллекцию, либо отменяют это действие.

Часть 2

При написании автоматических тестов важно понимать, что автоматическое тестирование графического интерфейса – задача весьма сложная. Поэтому в шаблоне MVVM уровень представления (View) отделён от уровня ViewModel, что позволяет тестировать поведение приложения на уровне ViewModel, не создавая в тестах реальные объекты окон и графических элементов. Если же такое разделение не соблюдается, то тестировать приходится приложение целиком, и, как правило, вручную (что гораздо менее эффективно).

Автоматический тест с использованием поддельной фабрики, создающей диалоговые ViewModel, приведён в примере (см. модуль MainViewModelTest).

Необходимо написать автоматический тест, который проверит, что при вызове формы редактирования объекта, для которого уже открыто окно для редактирования, новая форма для редактирования не будет создана.

Бонусное задание за дополнительные баллы:

Написать автоматический тест, который проверит, что при вызове команды удаления объекта, для которого открыта форма для редактирования, эта форма будет закрыта.

Примечание: В практике программирования широкое применение имеют DI-фреймворки (например, Unity, Spring) и фреймворки для написания заглушек к тестовому коду (например, Moq, RhinoMock и др.) Использование этих инструментов очень сильно облегчает написание автоматических (как  модульных, так и интеграционных) тестов.

Требования к коду

При написании кода приложения необходимо придерживаться шаблона MVVM. В частности, не должно быть прямой зависимости классов ViewModel от слоя представления. Динамическое создание пары View-ViewModel лучше выделить в отдельный класс-фабрику (как в примере).

Написанные ранее модульные тесты должны выполняться успешно, либо, при необходимости, быть изменены.


 

А также другие работы, которые могут Вас заинтересовать

23098. Поширення світла в анізотропних середовищах. Дисперсія і поглинання 466 KB
  В анізотропному середовищі спостерігається подвійне заломлення променів зумовлене наявністю в них двох показників заломлення один з яких не залежить від напрямку поширення хвилі і відповідає одній поляризації а другий залежить від напрямку поширення і пов`язаний з іншою поляризацією. Введемо для ізотропного середовища показник заломлення. Для хвилі що поширюється в напрямку – x коливання відбуваються в напрямку z то показник заломлення більше в напрямку z ніж для коливань в напрямку – y. z – напрямок при якому показники...
23099. Явище обертання площини поляризації падаючого світла в речовинах 96 KB
  Явище обертання площини поляризації падаючого світла в речовинах. Якщо лінійно поляризоване світло проходить через плоскопаралельний шар речовини то в деяких випадках площина поляризації світла виявляється повернутою відносно свого вихідного положення. Це явище називається обертанням площини поляризації або оптичною активністю. Кут поворота площини поляризації залежить від довжини хвилі.
23100. Квантування енергії лінійного гармонічного осцилятора 202.5 KB
  Тоді гамільтоніан для такої системи буде: Класичний гармонічний осцилятор має розв’язки: і де А амплітуда ω – частота δ – початкова фаза коливань. Перетворимо це рівняння введемо безрозмірні величини та З урахуванням останнього рівняння Шредігера перепишеться як 1 Асимптотична поведінка розв’язку рівняння 1 при х→∞: Тоді 2 причому uzобмежена на нескінченності. Шукаючи розв’язок у вигляді степеневого ряду знаходимо рекурентну формулу для коефіцієнтів ряду: Розв’язки можуть бути або парними або непарними тобто або...
23101. Хвильові властивості частинок. Хвилі де Бройля 5.02 MB
  Хвилі де Бройля. Тобто інколи відбувається прояв як хвилі інколи як частинки. Тоді можна отримати вираз для хвилі де Бройля . Оберемо напрям вздовж за напрям розповсюдження хвилі де фаза хвилі що пересувається у просторі з фазовою швидкістю що шукається з умови що переміщується так щоб фаза залишалась постійною .
23102. Принципова схема лазера. Властивості лазерного випромінювання. Типи лазерів та їх застосування 51.5 KB
  При падінні хвилі з власною частотою переходу системи: змінюються заселеності рівнів N1 i N2 кількість атомів в одиниці об’єму що знаходяться на 1 та на 2 енергетичних рівнях відповідно. dN12=BN1dt ; кількість частинок що перейшли з 1 рівня на 2 dN21= AN2dt BN2dt кількість частинок що перейшли з 2 рівня на 1 де Акоеф. Крім того в стаціонарному режимі при умові термодинамічної рівноваги виконуються рівняння: N1N2=N=const кількість частинок в системі є сталою. В дворівневій системі не можна забезпечити умову N2 N1 бо навіть в...
23103. Рівняння Шредингера. Інтерпретація хвильової функції 49 KB
  Рівняння Шредингера. Для цього необхідне рівняння: 1. Рівняння повинно бути лінійним і однорідним хвиля задовольняє принц. Це рівняння Шредингера.
23104. Співвідношення невизначеності Гейзенберга, приклади його проявів 74.5 KB
  Нехай стан частинки опивується хв. Остаточно Співвідношення невизначеностей проявляється при будьякій спробі вимірювання точного положення або точного імпульса частинки. Виявляється що уточнення положення частинки впливає на те що збільшується неточність в значенні імпульса і навпаки. Часто втрачає зміст ділення повної енегрії частинкияк квантового об’єкту на потенціальну і кінетичну .
23105. Сестринский процесс при холециститах 25.25 MB
  Воспаление желчного пузыря регистрируется почти у 10% населения планеты, причем в 3-4 раза чаще холециститом страдают женщины. Большинство людей не следят за своим рационом, ведут сидячий образ жизни.
23106. Теорія молекули водню. Обмінна взаємодія 371 KB
  Оскільки гамільтоніан не залежить від спінових змінних то хвильова функція зображається добутком спінової функції на просторову . За допомогою хвильової функції знаходимо середнє значення повного гамільтоніана системи: де кулонівський інтеграл К характаризує ел. наближені хвильові функції Кулонівський інтеґрал К є малим числом і головну роль відіграє обмінний інтеґрал який у ділянці малих є додатною величиною а при змінює знак. Таким чином для симетричної просторової функції є можливим зв'язаний стан системи і теорія...