Лабы АИС. Практикум для студентов направления подготовки 230400. 68 Информационные системы и технологии
Скачать 2.14 Mb.
|
OneWay, то есть обновление свойства цели ведет к обновлению свойства ис- точника. Для явного задания источника привязки используется свой- ство Source. Источник привязки также можно определить с помощью свойства DataContext родительского элемента, которое позволя- ет привязывать несколько свойств дочерних элементов к одному источнику. В WPF все элементы управления, производные от Item- sControl, способны отображать список элементов. К таким эле- ментам относятся ListBox, ComboBox, ListView, TreeView и Da- taGrid. Для привязки источника к указанным элементам исполь- зуется свойство ItemSource. При этом тип данных, помещаемых в свойство должен поддерживать интерфейс IEnumerable. Если источник привязки является объектом, то для указания пути к значению источника используется свойство Path. При свя- 61 зывании данных XML для указания значения используют свойст- во XPath, которому присваивается выражение на языке XPath. Пример 4.1. Работа с XML-документом с помощью привязки данных в приложении WPF. Требуется разработать приложение WPF, которое позволяет производить модификацию XML-документа (добавление новых и удаление существующих элементов, изменение содержимого элементов и значений атрибутов). В качестве XML-документа воспользуемся документом, по- лученным в примере 2.2. В доработанном виде этот документ по- казан на рис. 4.1. Рис. 4.1. Код XML-документа Для вывода списка товаров добавим шаблон данных с клю- чевым именем ProductDataTemplate в ресурсы главного окна. В 62 этом шаблоне определим три текстовых блока, содержащих раз- личные данные (код товара, наименование товара и производи- тель). Исходный код XAML приложения WPF приведен на рис. 4.2 – 4.4, код на C# показан на рис. 4.5 и 4.6. Рис. 4.2. Код XAML-документа MainWindow.xaml с описа- нием ресурсов (часть 1) 63 Рис. 4.3. Код XAML-документа MainWindow.xaml (часть 2) 64 Рис. 4.4. Код XAML-документа MainWindow.xaml (часть 3) 65 Рис. 4.5. Исходный код на C# (модуль MainWindow.xaml.cs, часть 1) 66 Рис. 4.6. Исходный код на C# (модуль MainWindow.xaml.cs, часть 2) Окно работающего приложения WPF с привязкой данных показано на рис. 4.7. Рис. 4.7. Работа приложения WPF 67 4.2.2. Шаблоны данных Шаблоны данных. В WPF существует возможность использовать комбинацию свойств источника привязки для представления данных. Такая возможность обеспечивается с помощью шаблонов данных. Шаблон данных (англ. Data Template) – это фрагмент кода XAML, задаваемый с помощью элемента DataTemplate, который определяет, как привязанный объект данных должен быть ото- бражен. Как и любой другой блок разметки XAML, шаблон данных может включать любую комбинацию элементов. Шаблон данных также должен включать одно или более выражений привязки, ко- торые извлекают информацию для отображения. Шаблоны данных поддерживают два типа элементов управ- ления: • Элементы управления содержимым (Label, TextBox и др.), поддерживающие шаблон данных через свойство ContentTem- plate; • Списочные элементы управления (ListBox, ComboBox, ListView и др.), которые поддерживают шаблоны данных с по- мощью свойства ItemTemplate. Для элемента ListBox простейший шаблон данных может выглядеть следующим образом: < ListBox Name ="PersonsList"> < ListBox.ItemTemplate > < DataTemplate > < TextBlock Text ="{ Binding Path =PersonName}" /> DataTemplate > ListBox.ItemTemplate > ListBox > Подобно стилям, шаблоны данных часто объявляются как ресурс окна или приложения. Это позволяет повторно использо- вать шаблон данных в более чем одном элементе управления. 68 Пример 4.2. Привязка и форматирование данных из до- кумента XML в страничном приложении WPF. Требуется доработать приложение со страничной навигаци- ей, полученное в примере 3.2. Для этого добавим привязку таб- лиц (элементы DataGrid) и их отдельных столбцов к данным из XML-документа (приложение П.1). Данные по домам, квартирам и жильцам должны выводиться в табличной форме. Код XAML-документа для страницы «квартиры» показан на рис. 4.8. Добавим в приложение класс XMLObjectModel, который будет содержать набор статических методов для выполнения действий с XML-документом. Исходный код данного класса при- веден на рис. 4.9. Код присоединенного модуля на C# для страницы «кварти- ры» показан на рис. 4.10. 69 Рис. 4.8. Код страницы ApartmsPage.xaml (квартиры) 70 Рис. 4.9. Исходный код класса XMLObjectModel Рис. 4.10. Исходный код на C# (модуль ApartmsPage.xaml. cs) Результат работы приложения WPF для загруженных стра- ниц «квартиры» и «жильцы» показан на рис. 4.11 и 4.12. 71 Рис. 4.11. Работа приложения WPF (страница «квартиры») Рис. 4.12. Работа приложения WPF (страница «жильцы») 4.3. Порядок выполнения работы 72 Данная лабораторная работа предполагает выполнение сле- дующих этапов: 1. Изучить методические указания к лабораторной работе. 2. Разработать приложение, которое позволяет модифици- ровать XML-документ, полученный в работе №2 из массива объ- ектов. Данное приложение должно выводить данные по всем элементам, обеспечивать возможность редактирования данных, а также добавления и удаления элементов. 3. Доработать приложение со страничной навигацией из работы №3, добавив привязку таблиц (элементы DataGrid) и их отдельных столбцов к данным из XML-документа. При этом дан- ные должны выводиться в табличной форме при загрузке соот- ветствующих страниц приложения. 4. Оформить и защитить отчет по лабораторной работе. 4.4. Контрольные вопросы 1. Что понимают под привязкой данных WPF? 2. Из каких основных компонентов состоит привязка дан- ных? 3. Какие выделяют виды привязки по направлению потока данных? 4. Какие свойства в элементах управления служат для при- вязки к ним источника данных? 5. Что называют шаблоном данных WPF? 6. Какие свойства элементов управления служат для зада- ния шаблона данных? 73 РЕКОМЕНДУЕМАЯ ЛИТЕРАТУРА 1. Андерсон К. Основы Windows Presentation Foundation: Пер. с англ. – М.: ДМК Пресс, 2008. – 428 с. 2. Архитектура информационных систем: учебник для студ. учреждений высш. проф. образования / Б.Я. Советов, А.И. Водя- хо, В.А. Дубеницкий, В.В. Цехановский. – М.: Издательский центр «Академия», 2012. – 288 с. 3. Басс Л., Клементс Э., Кацман Д. Архитектура программ- ного обеспечения на практике. – СПб.: Питер, 2006. – 240 с. 4. Ватсон Б. C# 4.0 на примерах. – СПб.: БХВ-Петербург, 2011. – 608 с. 5. Гвоздева Т.В. Проектирование информационных систем: учеб. пособие / Т.В. Гвоздева, Т.А. Баллод. – Ростов н/Д: Феникс, 2009. – 508 с. 6. Зиборов В.В. Visual C# 2010 на примерах. – СПб.: БХВ- Петербург, 2011. – 432 с. 7. Мак-Дональд М. Windows Presentation Foundation в .NET 4.0 с примерами на C# для профессионалов: Пер. с англ. – М.: ООО «И.Д. Вильямс», 2010. – 1024 с. 8. Макки А. Введение в .NET и Visual Studio 2010 для про- фессионалов: Пер. с англ. – М.: ООО «И.Д. Вильямс», 2010. – 416 с. 9. Пауэрс Л. Microsoft Visual Studio 2008 / Л. Пауэрс, М. Снелл: Пер. с англ. – СПб.: БХВ-Петербург, 2009. – 1200 с. 10. Петцольд Ч. Microsoft Windows Presentation Foundation: Пер. с англ. – СПб.: Питер, 2008. – 944 с. 11. Троелсен Э. Язык программирования С# 5.0 и платфор- ма .NET 4.5, 6-е изд.: Пер. с англ. – М.: ООО «И.Д. Вильямс», 2013. – 1312 с. 12. Шилдт Г. C# 4.0: полное руководство.: Пер. с англ. – М.:ООО «И.Д. Вильямс», 2011 – 1056 с. 74 ПРИЛОЖЕНИЕ П.1. Пример разработки XML-документа Требуется разработать XML-документ, содержащий сведе- ния об оплате за коммунальные услуги. В качестве сведений вы- ступает информация о жилых домах (код, улица, номер), кварти- рах (код, номер, площадь), жильцах (код, ФИО, дата рождения), показаниях счетчиков (дата, расход холодной и горячей воды в м3, расход электроэнергии в квт·ч) и по квартплате (дата, всего, пеня). Дерево документа представлено на рис. П.1. Рис. П.1. Дерево XML-документа Код XML-документа может иметь следующий вид: xml version = " 1.0 " encoding = " utf‐8 " ?> < коммун_услуги xmlns = " http://www.g42.kommunal.ru/uslugi/oplata " > < дом код = " h18 " > < адрес > 75 < улица > Волгоградская улица > < номер > 8 номер > адрес > < квартира код = " a234 " номер = " 57 " > < площадь > 28 площадь > < жилец код = " c11568 " > < фио > Костенко Игорь Сергеевич фио > < дата_рожд > 10.11.1978 дата_рожд > жилец > < показ_приборов дата = " 02.05.2013 " > < хол_вода ед_изм = " м3 " > 19,04 хол_вода > < гор_вода ед_изм = " м3 " > 6,89 гор_вода > < эл_энерг ед_изм = " квтч " > 39,27 эл_энерг > показ_приборов > < плата дата = " 04.05.2013 " > < всего > 1896,45 всего > < пеня > 0 пеня > плата > квартира > < квартира код = " a236 " номер = " 59 " > < площадь > 42 площадь > < жилец код = " c27788 " > < фио > Соловьев Дмитрий Андреевич фио > < дата_рожд > 22.07.1988 дата_рожд > жилец > < жилец код = " c27789 " > < фио > Соловьева Елена Николаевна фио > < дата_рожд > 03.10.1989 дата_рожд > жилец > < показ_приборов дата = " 04.05.2013 " > < хол_вода ед_изм = " м3 " > 172,24 хол_вода > < гор_вода ед_изм = " м3 " > 65,07 гор_вода > < эл_энерг ед_изм = " квтч " > 125,69 эл_энерг > показ_приборов > < плата дата = " 05.05.2013 " > < всего > 2396,45 всего > < пеня > 0 пеня > плата > квартира > дом > < дом код = " h72 " > < адрес > 76 < улица > Сибиряков‐Гвардейцев улица > < номер > 112 номер > адрес > < квартира код = " a358 " номер = " 35 " > < площадь > 36 площадь > < жилец код = " c34670 " > < фио > Курганков Георгий Михайлович фио > < дата_рожд > 26.02.1972 дата_рожд > жилец > < показ_приборов дата = " 08.05.2013 " > < хол_вода ед_изм = " м3 " > 405,21 хол_вода > < гор_вода ед_изм = " м3 " > 159,35 гор_вода > < эл_энерг ед_изм = " квтч " > 209,76 эл_энерг > показ_приборов > < плата дата = " 12.05.2013 " > < всего > 50896,56 всего > < пеня > 4507,34 пеня > плата > квартира > дом > коммун_услуги > В начальном теге корневого элемента коммун_услуги зада- но пространство имен по умолчанию, которое имеет идентифика- тор «http://www.g42.komunal.ru/uslugi/oplata». |