41911

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

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

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

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

Русский

2013-10-26

19.15 KB

92 чел.

Лабораторная №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 лучше выделить в отдельный класс-фабрику (как в примере).

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


 

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

3654. Закріплення знань про звукове значення букви «ш» (ша). 2.84 MB
  Закріплення знань про звукове значення букви «ш» (ша). Мета. Закріплювати знання учнів про звукове значення букви «ш» (ша) виконувати звуко-буквений аналіз слів;формувати в учнів навички свідомого й виразного читання розвивати мислення...
3655. Виховний захід. У країні дорожніх знаків 1.85 MB
  У країні дорожніх знаків 1-а ведуча. Добрий день! Сьогодні ми поговоримо про правила дорожнього руху. Відомо всім, що найдорожчий скарб людини - це її власне життя...
3656. Дистанційне навчання 761.5 KB
  Одним з пріоритетних напрямів програми модернізації загальноосвітньої і вищої школи визнане дистанційне навчання. В 2000 році прийнята Концепція розвитку дистанційної освіти в Україні (затверджено Постановою МОН України В.Г. Кременем 20 г...
3657. Познакомить учащихся с участниками афганской войны 38.5 KB
  Цель: познакомить учащихся с участниками афганской войны, с воинами, поэтический талант которых расцвел в суровый военный период, с жизнью и творчеством 23-летнего Александра Стовбы (Аиста), посмертно принятого в Союз писателей СССР воспитывать у ш...
3658. СПОРТ ДЛЯ ВСІХ 1.16 MB
  СПОРТ ДЛЯ ВСІХ (Звучить мелодія грецького танцю «Сіртаки» ). Голос за кадром. Більше двох тисяч років тому в Греції, в долині річки Алфей, знаходилось містечко Олімпія. У густій зелені оливкових гаїв сяяли біломармурові храми в честь давньогрецьких...
3659. Склад числа шість. Поняття зліва, справа 396.31 KB
  Мета уроку. Сформувати вміння складати приклади на додавання та віднімання в межах 6. Вчити розрізняти многокутники за їх основними ознаками, розвивати вміння аналізувати, співставляти, виділяти істотне. Закріпити навики визначення понять «зліва», «справа». Збагатити знання про тваринний світ морських мешканців, виховувати любов до природи, дбайливе ставлення до живого.
3660. Нам треба твого голосу, Тарасе! 122 KB
  Нам треба твого голосу, Тарасе! Мета: Вчити учнів сприймати поезію Кобзаря серцем і душею, виховувати любов до України, її великих людей. Оформлення: У залі – портрет Тараса Шевченка, прикрашений рушниками. Виставка книг та ;вишивок. Хід з...
3661. Алгоритми роботи з одномірними масивами 119 KB
  Алгоритми роботи з одномірними масивами. Масив задає спосіб організації даних. Масивом називають упорядковану сукупність елементів одного типу. Кожен елемент масиву має індекси, що визначають порядок елементів. Число індексів характеризує розмі...
3662. Алгоритми роботи з багатомірними масивами 160.5 KB
  Алгоритми роботи з багатомірними масивами Поділ;масивів на одномірні і багатомірні носить історичний характер. Ніякої принципової різниці між ними немає. Одномірні масиви - це окремий випадок багатомірних. Можна говорити й по-іншому: багат...