Россия, Красноярск, СФУ, 2008 |
Лабораторная работа
Лабораторная работа №3
Тема
Программирование ввода/вывода приложений WinRT
Задание
Для указанного варианта разработать программу, моделирующую работу системы управления вводом-выводом.
Исполнение
Изучить систему управления вводом-выводом. Изучить структуры данных, используемые системой. Отладить и оттестировать составленную программу
Цель
Формирование навыков разработки системы ввода/вывода в приложениях WinRT
Методические указания
На основе макета приложения и добавленных элементов управления реализуйте заполнение приложения необходимой информацией.
Пример создания текстовых полей для ввода / вывода информации:
<TextBlock x:Name="NotificationBox" HorizontalAlignment="Left" Margin="350,130,0,0" TextWrapping="Wrap" Text="TextBlock" VerticalAlignment="Top" Height="28" Width="600" Foreground="#FF08519E" FontFamily="Assets/Play-Regular.ttf#Play" FontSize="16" Visibility="Collapsed"/>
Пример создания простейшей галереи изображений:
<FlipView x:Name="TambovView" HorizontalAlignment="Left" Margin="616,195,0,0" VerticalAlignment="Top" Width="500" Height="333" Visibility="Collapsed"> <Image Source="Assets/1.jpeg" /> <Image Source="Assets/2.jpeg" /> <Image Source="Assets/3.jpeg" /> <Image Source="Assets/4.jpeg" /> <Image Source="Assets/5.jpeg" /> </FlipView>
Теперь рассмотрим непосредственно процесс хранения и загрузки заметок. В качестве базы данных будет использоваться xml файл, доступ к которому будет осуществляться с использованием библиотеки Linq. В xml файле будет один основной элемент noties - так называемый Root элемент. Внутри него будут располагаться элементы messadges с двумя основными свойствами - name (будет отображать принадлежность к конкретной странице) и value (будет содержать в себе текст заметки).
При этом, когда пользователь нажмет на соответствующую кнопку - должна произойти загрузка содержимого заметки в текстовое поле.
Рассмотрим функцию, которая получает и записывает в текстовое поле значение заметки.
private void searchText(string name_of_search) { ResultBox.Text = ""; ResultBox.SelectionStart = 0; string fileName = "Assets/Data.xml"; XDocument doc = XDocument.Load(fileName); IEnumerable<XElement> content = doc.Root.Elements("messadge").Where(t => t.Attribute("name") .Value == name_of_search).ToList(); string result = ""; foreach (XElement values in content) result += values.Attribute("value").Value.ToString(); List<string> newList = null; char separator = '|'; newList = result.Split(separator).ToList(); for (int i = 0; i < newList.Count; i++) ResultBox.Text += " " + newList[i] + Environment.NewLine + Environment.NewLine; }
Рассмотрим данную функцию подробнее:
- name_of_search - содержит в тебе ключевое слово для заметки. Т.е. передача в качестве параметра функции значения "managment.rektor" позволит загрузить содержимое заметки о ректоре ТГТУ.
- ResultBox.Text = ""; - обнуление текстового поля.
- ResultBox.SelectionStart = 0; - указываем первоначальное положение курсора и полос прокрутки.
- string fileName = "Assets/Data.xml"; - определяем имя файла, содержащего данные.
- XDocument doc = XDocument.Load(fileName); - загрузка текущего документа.
- IEnumerable<XElement> content = doc.Root.Elements("messadge").Where(t => t.Attribute("name").Value == name_of_search).ToList(); - основная строка в данном приложении. С ее использованием осуществляется поиск заметки, атрибут name которой совпадает со значением, переданным пользователем. Затем происходит формирования списка со всеми возможными результатами поиска.
- foreach (XElement values in content) result += values.Attribute("value").Value.ToString(); - осуществляется проход по всем существующим (найденным) элементам, полученным в результате поиска и получение значение заметки.
- Оставшаяся часть - производит разбиение строки в соответствии с разделителями и вывод на экран.
Содержание отчета
- Задание к лабораторной работе
- Описание системы упpавления вводом-выводом.
- Описание стpуктуpы данных, используемые системой.
- Листинг пpогpаммы, моделиpующей pаботу системы упpавления вводом-выводом.
- Пример работы приложения.
- Вывод о проделанной работе.
Контрольные вопросы
- Какие элементы ввода-вывода составляют основу интерфейса приложений WinRT?
- Как реализуется сенсорное взаимодействие?
- Что такое плитки и уведомления?
- Что такое контракты?
- Как приостановить и продолжить работу приложения?
- Как реализуется контекстное масштабирование?