// Если не удаётся найти web-сайт, необходимо

// нейтрализовать ошибку, чтобы приложение продолжило свою работу

e. Handled = true;

}

}

}

Рисунок 3.3 иллюстрирует обработку исключения при выборе некорректной ссылки на сайт.

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

Рисунок 3.3

При использовании ссылок на внешние web-сайты существуют ограничения:

- нельзя запретить пользователю переходить на какие-то конкретные страницы или сайты;

- нельзя взаимодействовать с web-страницей с помощью HTML DOM (Document Object Model - объектная модель документа).

Это означает, что сканировать страницу для поиска ссылок или изменять её динамически тоже нельзя.

Выполнение всех этих задач становится возможным только в случае использования элемента управления WebBrowser.

3.1.3 Класс NavigationWindow является производным от класса Window, расширяя его возможностями перехода и отображения содержимого. Ниже приводится соответствующее определение класса и XAML-описание:

public class NavigationWindow : Window

<NavigationWindow> Content </NavigationWindow>

Содержимым NavigationWindow может быть любой объект .NET Framework или файл HTML, но предпочтительным методом упаковки содержимого для переходов является объект класса Page.

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

Для перехода к определённому содержимому можно использовать:

- свойство Source элемента <NavigationWindow>, указав URI этого содержимого или имя страницы, например Source="Page1.xaml", Source="file://D:/plan. htm" или "http://www. INTUIT. ru";

- одну из перегруженных версий метода Navigate() класса NavigationWindow с параметрами URI и(или) Object, например Navigate(new Page1()).

Если выполняется переход к содержимому по URI, то NavigationWindow возвращает объект с этим содержимым.

Время существования перехода можно отследить с помощью следующих событий:

- Navigating;

- Navigated;

- NavigationProgress;

- NavigationFailed;

- NavigationStopped;

- LoadCompleted;

- FragmentNavigation.

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

В процессе перехода или после него объект класса NavigationWindow предоставляет информацию о содержимом, к которому осуществляется переход, включая URI этого содержимого (Source), URI текущего содержимого (CurrentSource) и объект, вмещающий содержимое, к которому осуществляется переход (Content).

Рисунок 3.4

Когда осуществляется переход к содержимому, NavigationWindow фиксирует этот переход в виде записи в журнале переходов.

Добавление записи в журнал переходов «назад» выполняется при выполнении нового перехода путём вызова метода Navigate() или при переходе к записи в журнале переходов «вперёд» путём вызова метода GoForward(). В журнал переходов «вперёд» добавляется запись путём перехода к записи в журнале переходов «назад» с помощью вызова метода GoBack(). Методы CanGoBack() и CanGoForward() указывают, есть ли записи перемещений «вперёд» и «назад» в журнале переходов.

Когда впервые выполняется переход от одного фрагмента содержимого к другому, NavigationWindow автоматически отображает навигационный UI, позволяющий пользователям переходить «вперёд» и «назад» по журналу переходов. Момент отображения навигационного UI можно настраивать с помощью свойства ShowsNavigationUI. Последняя запись в журнале переходов «назад» может быть удалена с помощью метода RemoveBackEntry().

NavigationWindow не сохраняет экземпляр объекта содержимого в журнале переходов, вместо этого он создаёт новый объект содержимого при каждом переходе к нему с использованием журнала переходов.

Такое поведение предусмотрено во избежание чрезмерного потребления памяти при выполнении перехода к большим фрагментам содержимого. Соответственно, состояние содержимого не запоминается между переходами. Однако WPF предоставляет несколько возможностей сохранения состояния содержимого в журнале переходов.

С помощью метода AddBackEntry() можно также сохранять несколько состояний одного экземпляра страницы.

Моделью содержимого NavigationWindow является ContentControl, а это значит, что NavigationWindow может иметь такое содержимое, как текст, изображения или панели.

Кроме того, NavigationWindow является корневым элементом, и, следовательно, не может быть частью содержимого другого элемента.

Подход с применением NavigationWindow имеет свои ограничения, потому, что страницы тесно связаны с контейнером и не могут использоваться повторно в других хостах.

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

При переходе к HTML-содержимому элемент управления Frame на внутреннем уровне создаёт объект WebBrowser, который является экземпляром машинного элемента управления ActiveX.

Для безопасной работы с вновь элементом ActiveX среда WPF включает функции элемента управления WebBrowser. Функции элементов управления, которые при этом применяются, отличны от XBAP и автономных приложений. Некоторые приложения должны применять дополнительные функции элементов управления, чтобы предотвратить выполнение вредоносного содержимого.

Содержимое Frame может быть объектом. NET Framework и файлами HTML любого типа. Обычно, однако, предпочтительным способом упаковки содержимого для переходов являются страницы Page. Для перехода к содержимому используются такие же, что и у класса NavigationWindow средства: свойство Source и одна из перегруженных версий метода Navigate().

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

В процессе перехода или после него Frame предоставляет информацию о содержимом, к которому осуществляется переход, включая URI этого содержимого (Source), URI текущего содержимого (CurrentSource) и объект, вмещающий содержимое, к которому осуществляется переход (Content). Когда отображён UI перехода, можно выполнить настройку установкой свойства NavigationUIVisibility.

По умолчанию Frame будет использовать свой собственный журнал переходов только в том случае, если не удалось найти родительский навигатор (NavigationWindow или Frame) с его журналом переходов. Это означает, что записи журнала переходов для Frame смешаны с записями журнала переходов для родительского навигатора. Чтобы указать, что Frame управляет своим собственным журналом переходов, необходимо установить свойство JournalOwnership в значение OwnsJournal.

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

Элементы управления WPF можно условно разделить на следующие группы:

- простые элементы управления;

- простые элементы управления с содержимым;

- элементы управления с озаглавленным содержимым;

- элементы управления со структурированным содержимым (ItemsControl);

- элементы с заголовками;

- декорации.

3.2.1 Простые элементы управления не имеют свойства Content, то есть поддерживает свойства содержимого, поэтому не может принимать любую форму и включать другой элемент. В таблице 3.2 описаны классы простых элементов управления и их функциональность.

Таблица 3.2

Класс

Описание

PasswordBox

Используется для ввода пароля. Предусмотрены специфические свойства, например, PasswordChar, определяющее символы, которые должны отображаться по мере ввода пользователем пароля. Событие PasswordChanged вызывается, как только изменяется пароль.

ScrollBar

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

ProgressBar

Позволяет отображать ход выполнения длительной операции.

Slider

Позволяет выбирать диапазон значений, перемещая ползунок. Классы ScrollBar, ProgressBar и Slider унаследованы от общего базового класса RangeBase.

TextBox

Используется для отображения простого неформатированного текста.

RichTextBox

Поддерживает форматированный текст с помощью класса FlowDocument. Классы RichTextBox и TextBox унаследованы от общего базового класса TextBoxBase. Метод AppendText добавляет строку в коллекцию строк.

Calendar

Появился в. NET 4, отображает месяц, год и декаду. Пользователь может выбирать дату или диапазон дат.

DatePicker

Открывает на экране элемент Calendar для выбора пользователем даты.

В WPF имеются три текстовых элемента управления: TextBox (текстовое поле), RichTextBox (текстовое поле с форматированием) и PasswordBox (поле ввода пароля).

Элемент PasswordBox порождён непосредственно от класса Control. TextBox всегда хранит строку (в свойстве Text). PasswordBox тоже содержит строку текста (в свойстве Password), однако использует объект SecureString для защиты от некоторых видов атак. Только элемент RichTextBox позволяет хранить более сложное содержимое - FlowDocument, которое может состоять из сложного сочетания элементов (рассмотрен в 3.4).

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

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

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

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

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

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

Техника

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

Общество

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

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

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

Мир

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

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

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