Содержание

3

Страничная модель оконного интерфейса WPF и элементы управления содержимым

114

3.1

Страничные интерфейсы WPF

114

3.2

Элементы управления WPF

121

3.3

Лабораторная работа №3 «Создание многостраничных приложений WPF с элементами управления содержимым»

133

3.4

Методические указания к СРСП и СРС по теме «Высокоуровневые средства WPF для работы с документами»

153

3.5

Задания и контрольные вопросы для самопроверки по тематике самостоятельной работы

117

4

Список рекомендуемой литературы

117


3 СТРАНИЧНАЯ МОДЕЛЬ ОКОННОГО ИНТЕРФЕЙСА WPF И ЭЛЕМЕНТЫ УПРАВЛЕНИЯ СОДЕРЖИМЫМ

3.1 Страничные интерфейсы WPF

В настоящее время страничная модель часто применятся в простых, облегчённых и в более сложных оконных приложениях. В страничных приложениях содержимое страниц встраивается в специальный навигационный каркас, поддерживающий навигационные ссылки и журнал навигации.

3.1.1 Классическим примером приложения с таким оконным интерфейсом является explorer. exe Windows 7. Образ окно проводника иллюстрирует рисунок 3.1.

Рисунок 3.1

Чтобы предоставить разработчикам возможность создавать настольные приложения в стиле web-приложений, в состав WPF включена собственная гибкая система страничной навигации. Встроенная модель страниц WPF позволяет разрабатывать приложения, использующие страничные функции, например, в мастере или справочной системе, и приложения, функционирующие непосредственно в браузере.

Существуют два типа страничных WPF приложений:

- автономные приложения Windows, в которых страницы используются для части или всего пользовательского интерфейса; подход следует применять в простых приложениях, чтобы навигационные и журнальные функции позволили упростить кодирование;

НЕ нашли? Не то? Что вы ищете?

- браузерные приложения (приложения ХВАР), которые обслуживаются в Internet Explorer или Firefox и имеют ограниченные полномочия; подход следует применять, когда необходимо получить облегчённую, основанную на web-технологиях модель развёртывания.

Страничные приложения WPF для создания пользовательских интерфейсов использует в качестве контейнера высшего уровня класс System. Windows. Controls. Page.

Модель для создания страниц в WPF во многом схожа с моделью для создания окон Windows. Для каждой страницы WPF создаётся файл XAML и файл отделённого (partial) процедурного кода. Создавать объекты страниц можно и с помощью одного лишь кода. На этапе компиляции для каждого модуля страницы компилятор создаёт производный класс, который объединяет написанный разработчиком код с кодом связующих элементов, который генерируется автоматически. К таким элементам, прежде всего, относятся поля, которые ссылаются на каждый именованный элемент на странице.

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

В качестве такого контейнера WPF позволяет использовать:

- класс NavigationWindow (или элемент <NavigationWindow>), который представляет собой видоизменённую версию класса Window;

- элемент <Frame>, находящийся внутри другого окна;

- элемент <Frame>, находящийся внутри другой страницы;

- элемент <Frame>, обслуживаемый непосредственно в Internet Explorer или Firefox.

При создании автономного приложения WPF можно устанавливать свойство StartupUri элемента <Application> так, чтобы оно указывало на страницу; либо создать объект NavigationWindow вручную и затем загрузить первую страницу внутрь него; или же вставить страницы в специальное окно с помощью элемента управления Frame. Эти подходы предоставляют возможность задавать размер окна приложения, что является важным для придания приложению презентабельного вида при его первом запуске.

В случае создания браузерного приложения возможности для управления размером содержащего окна web-браузера не предоставляется и потому обязательно потребуется установить свойство StartupUri так, чтобы оно указывало на страницу.

Классы NavigationWindow и Frame определены в WPF как навигаторы. Навигатор - это класс, поддерживающий переход и журнал переходов.

3.1.2 Класс Page инкапсулирует функциональность страницы окна, его описание:

public class Page : FrameworkElement

<Page> Content </Page>

Подобно классу Window класс Page (элемент XAML-описания <Page>) допускает наличие только единственного вложенного элемента. Но класс Page не является элементом управления содержимым, он унаследован непосредственно от класса FrameworkElement. Класс Page является более простым и имеет небольшой набор дополнительных свойств, которые позволяют настраивать внешний вид страницы, взаимодействовать с владеющим им контейнером (хостом) и применять навигацию. Все эти свойства перечислены в таблице 3.1.

В классе Page нет эквивалентов для методов Hide() и Show(), доступных в классе Window. Для того чтобы показать страницу, используется механизм навигации.

Размер страницы обычно не устанавливается, он определяется обслуживающим её хостом. Если же свойства Width и Height страницы указаны, то страница принимает эти размеры, но часть её содержимого может быть усечена.

Наиболее простой способ позволить пользователю перемещаться с одной страницы на другую - это гиперссылки.

В WPF гиперссылки являются не отдельными, а внутри строчными потоковыми элементами, которые обязательно должны размещаться внутри другого поддерживающего их элемента.

Таблица 3.1

Имя

Описание

Background

Принимает кисть, которая позволяет устанавливать заливку для фона

Content

Принимает один элемент, который отображается на странице. Обычно в роли такого элемента выступает контейнер компоновки, такой как <Grid> или <StackPanel>

Foreground,

FontFamily и

FontSize

Определяют внешний вид по умолчанию для текста внутри страницы. Значения этих свойств наследуются элементами внутри страницы. Например, если устанавливается заливка переднего плана и размер шрифта, по умолчанию содержимое внутри страницы получает эти же настройки

WindowWidth,

WindowHeight и

WindowTitle

Определяют внешний вид окна, в которое упаковывается страница. Эти свойства позволяют управлять хостом путём установки его ширины, высоты и заголовка. Однако они действуют только в том случае, если страница обслуживается в окне (а не во фрейме)

NavigationService

Возвращает ссылку на объект NavigationService, которую можно использовать для отправки пользователя на другую страницу программным путём

KeepAlive

Определяет, должен ли объект страницы оставаться действующим после перехода пользователя на другую страницу. Это свойство используется для восстановления страниц из хронологии навигации

ShowsNavigationUI

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

Title

Устанавливает имя, которое должно применяться для страницы в хронологии навигации. Хост не использует свойство Title для установки заголовка в строке заголовка: для этой цели у него есть свойство WindowTitle

Ниже приведены примеры объединения текста и ссылок в элементе <TextBlock>, который является самым практичным контейнером для гиперссылок:

<TextBlock Margin="3" TextWrapping="Wrap"> Ссылка на страницу

<Hyperlink NavigateUri="Page2.xaml">Страница 2</Hyperlink>

</TextBlock>

<TextBlock Margin="3" TextWrapping="Wrap"> Ссылка на документ

<Hyperlink NavigateUri="file://D:/plan. htm">План</Hyperlink>

</TextBlock>

<TextBlock Margin="3" TextWrapping="Wrap"> Ссылка на сайт

<Hyperlink NavigateUri="http://parallel. ru">parallel. ru</Hyperlink>

</TextBlock>

Рисунок 3.2 иллюстрирует описание ссылок и результат навигации.

При визуализации гиперссылки отображаются традиционно, как подчёркнутый текст синего цвета.

Щелчки на ссылке можно обрабатывать двумя способами: реагировать на событие Click либо направлять пользователя на другую страницу.

Если выбирается ссылка на сайт, то в область страницы загружается целевая web-страница. Однако при использовании такого приёма обязательно должен быть присоединён обработчик к событию Application. DispatcherUnhandledException. Попытка посещения web-сайта может оказаться неудачной, в таком случае сеть возвращает ошибку, которая воплощается в исключение WebException.

Рисунок 3.2

Для корректной обработки этого исключения и предотвращения неожиданного завершения работы приложения, оно должно быть нейтрализовано с помощью обработчика, например такого:

public partial class App : Application

{

public App()

{

// Подписались на событие необработанных исключений

this. DispatcherUnhandledException += App_DispatcherUnhandledException;

}

void App_DispatcherUnhandledException(object sender,

System. Windows. Threading. DispatcherUnhandledExceptionEventArgs e)

{

if (e. Exception is . WebException)

{

MessageBox. Show("Web-сайт не найден.");

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11 12 13 14

Основные порталы (построено редакторами)

Домашний очаг

ДомДачаСадоводствоДетиАктивность ребенкаИгрыКрасотаЖенщины(Беременность)СемьяХобби
Здоровье: • АнатомияБолезниВредные привычкиДиагностикаНародная медицинаПервая помощьПитаниеФармацевтика
История: СССРИстория РоссииРоссийская Империя
Окружающий мир: Животный мирДомашние животныеНасекомыеРастенияПриродаКатаклизмыКосмосКлиматСтихийные бедствия

Справочная информация

ДокументыЗаконыИзвещенияУтверждения документовДоговораЗапросы предложенийТехнические заданияПланы развитияДокументоведениеАналитикаМероприятияКонкурсыИтогиАдминистрации городовПриказыКонтрактыВыполнение работПротоколы рассмотрения заявокАукционыПроектыПротоколыБюджетные организации
МуниципалитетыРайоныОбразованияПрограммы
Отчеты: • по упоминаниямДокументная базаЦенные бумаги
Положения: • Финансовые документы
Постановления: • Рубрикатор по темамФинансыгорода Российской Федерациирегионыпо точным датам
Регламенты
Термины: • Научная терминологияФинансоваяЭкономическая
Время: • Даты2015 год2016 год
Документы в финансовой сферев инвестиционнойФинансовые документы - программы

Техника

АвиацияАвтоВычислительная техникаОборудование(Электрооборудование)РадиоТехнологии(Аудио-видео)(Компьютеры)

Общество

БезопасностьГражданские права и свободыИскусство(Музыка)Культура(Этика)Мировые именаПолитика(Геополитика)(Идеологические конфликты)ВластьЗаговоры и переворотыГражданская позицияМиграцияРелигии и верования(Конфессии)ХристианствоМифологияРазвлеченияМасс МедиаСпорт (Боевые искусства)ТранспортТуризм
Войны и конфликты: АрмияВоенная техникаЗвания и награды

Образование и наука

Наука: Контрольные работыНаучно-технический прогрессПедагогикаРабочие программыФакультетыМетодические рекомендацииШколаПрофессиональное образованиеМотивация учащихся
Предметы: БиологияГеографияГеологияИсторияЛитератураЛитературные жанрыЛитературные героиМатематикаМедицинаМузыкаПравоЖилищное правоЗемельное правоУголовное правоКодексыПсихология (Логика) • Русский языкСоциологияФизикаФилологияФилософияХимияЮриспруденция

Мир

Регионы: АзияАмерикаАфрикаЕвропаПрибалтикаЕвропейская политикаОкеанияГорода мира
Россия: • МоскваКавказ
Регионы РоссииПрограммы регионовЭкономика

Бизнес и финансы

Бизнес: • БанкиБогатство и благосостояниеКоррупция(Преступность)МаркетингМенеджментИнвестицииЦенные бумаги: • УправлениеОткрытые акционерные обществаПроектыДокументыЦенные бумаги - контрольЦенные бумаги - оценкиОблигацииДолгиВалютаНедвижимость(Аренда)ПрофессииРаботаТорговляУслугиФинансыСтрахованиеБюджетФинансовые услугиКредитыКомпанииГосударственные предприятияЭкономикаМакроэкономикаМикроэкономикаНалогиАудит
Промышленность: • МеталлургияНефтьСельское хозяйствоЭнергетика
СтроительствоАрхитектураИнтерьерПолы и перекрытияПроцесс строительстваСтроительные материалыТеплоизоляцияЭкстерьерОрганизация и управление производством