Главная страница
Навигация по странице:

  • DataContext

  • IEnumerable . Если источник привязки является объектом, то для указания пути к значению источника используется свойство Path

  • XPath

  • MainWindow.xaml

  • MainWindow.xaml.cs

  • Шаблон данных

  • Label , TextBox

  • ItemTemplate . Для элемента ListBox

  • Пример

  • ApartmsPage.xaml

  • 4.3. Порядок выполнения работы

  • 4.4. Контрольные вопросы

  • РЕКОМЕНДУЕМАЯ ЛИТЕРАТУРА

  • ПРИЛОЖЕНИЕ П.1. Пример разработки XML-документа

  • Лабы АИС. Практикум для студентов направления подготовки 230400. 68 Информационные системы и технологии


    Скачать 2.14 Mb.
    НазваниеПрактикум для студентов направления подготовки 230400. 68 Информационные системы и технологии
    АнкорЛабы АИС
    Дата19.05.2022
    Размер2.14 Mb.
    Формат файлаpdf
    Имя файлаЛабы АИС.pdf
    ТипПрактикум
    #537797
    страница5 из 5
    1   2   3   4   5
    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».
    1   2   3   4   5


    написать администратору сайта