Ресурсы WPF Два типа ресурсов WPF: объектные ресурсы (object resource) – определенный.NET-объект, который можно использовать многократно; ресурсы сборки.

Презентация:



Advertisements
Похожие презентации
Ресурсы. Стили. Анимация. Лекция 15. Ресурсы Стили Анимация.
Advertisements

Коллекции классов Лекция 12. С помощью коллекций вместо создания структур данных программист использует готовые структуры данных, не заботясь об их реализации.
Полиморфизм. Полиморфизм – это свойство системы использовать объекты с одинаковым интерфейсом без информации о типе и внутренней структуре объекта.
Основы ООП и C# Работа с объектами и классами. Классы Класс специальный тип данных для описания объектов. Он определяет данные и поведение типа. Определение.
©Павловская Т.А. (СПбГУ ИТМО) Курс «С#. Программирование на языке высокого уровня» Павловская Т.А.
Тема 5. Основы современной технологии программирования Программирование в средах современных информационных систем. Интегрированные системы разработки.
1 Java 6. ИНТЕРФЕЙСЫ И ВНУТРЕННИЕ КЛАССЫ. 2 Интерфейсы Не являются классами Ни один из объявленных методов не может быть реализован внутри интерфейса.
АССОЦИАТИВНЫЕ КОЛЛЕКЦИИ Лекция 6 1. Отличие от последовательных 2 В последовательной коллекции каждый элемент ассоциируется с номером, начиная с 0. В.
Классы Windows Presentation Foundation System.Object DispatcherObject ApplicationDependencyObject Visual UIElement FrameworkElement Page Shape TextBlock.
Классы Windows Presentation Foundation - 1 System.ObjectDispatcherOjectApplicationDependencyObjectVisualUIElementFrameworkElementControlContentControlWindowButtonBaseButtonToggleButtonCheckBoxRadioButtonItemsControlSelectorListBoxListViewComboBoxTabContro
Обработка исключительных ситуаций Исключительная ситуация (исключение) – это ошибка, возникающая во время выполнения программы. Например, ошибка работы.
Основы информатики Классы Заикин Олег Сергеевич zaikin.all24.org
Версия сборки Номер версии сборки имеет формат major.minor.build.revision. Например, Значения major(старший), minor(младший), build (компоновка)
Особенности C# Индексаторы, события, частичные методы, расширяющие методы, сборщик мусора DraggonZ.
Что называется событием, что происходит при активации события. Как изменить свойства элементов управления? Чем отличаются свойства от методов?
1 © Luxoft Training 2012 Java: расширенные вопросы Модуль #8.
Проф. В.К.Толстых, Технологии разработки Internet- приложений Эталонные страницы – Master pages Из цикла лекций «Технологии разработки.
Наследование Наследование – это отношение является между классами. class Person { string first_name; int birth_year;... } class Student : Person { float.
Проф. В.К.Толстых, Технологии разработки Internet- приложений ASP.NET приложения – директивы Из цикла лекций «Технологии разработки Internet-приложений»
1 Классы в Java Ключевое слово class означает: Я говорю тебе, как выглядит новый тип объекта. Класс является базовым элементом объектно-ориентированного.
Транксрипт:

Ресурсы WPF Два типа ресурсов WPF: объектные ресурсы (object resource) – определенный.NET-объект, который можно использовать многократно; ресурсы сборки ( assembly resource) – двоичные данные, встроенные в скомпилированную сборку.

Объектные ресурсы WPF Класс ResourceDictionary реализует интерфейс IDictionary, его внутренняя реализация использует класс Hashtable. Ресурсы хранятся в коллекции в виде пар ключ-значение. Обычно ключ - это строка, но можно использовать и другие типы. Каждый ресурс в коллекции ResourceDictionary должен иметь уникальный ключ: при определении ресурса в разметке уникальный ключ определяется через атрибут x:KeyAttribute; при определении ресурса в коде ключ указывается как параметр метода Add. Можно определить ресурсы в любом элементе. Дочерний элемент имеет доступ к любому ресурсу, определенному в любом из родительских элементов. По этой причине ресурсы обычно определяются в корневом элементе окна, страницы или приложения. Свойство Resources возвращает только словарь ресурсов, объявленный непосредственно внутри данного элемента. public ResourceDictionary Resources { get; set; } WPF ресурсы (объектные ресурсы) – простой способ повторного использования определенных объектов и их значений. Ресурсы можно создавать и использовать как в разметке, так и в коде. Любой элемент, производный от FrameworkElement или FrameworkContentElement, содержит коллекцию ResourceDictionary, которая доступна через свойство Resources.

Пример определения ресурса в разметке В примере два контекстных меню объявлены как ресурсы в элементе Window - одно с ключом key_Russian_Menu, другое с ключом key_English_Menu. Ресурс с ключом key_Russian_Menu используется как значение для свойства ContextMenu элемента listBox1.

Объект пользовательского типа как ресурс В примере два объекта типа CustomData.Data_1 объявлены как ресурсы в объекте Application - один с ключом datakey_1, другой с ключом datakey_2. При создании объектов для их инициализации будут вызваны конструкторы без параметров. Пространство имен CustomData объявлено в открывающем тэге элемента Application с префиксом zz. Префикс zz используется в элементах разметки, объявляющих объекты типа Data_1.

Работа с объектными ресурсами в коде Класс FrameworkElement содержит методы для поиска ресурса public Object FindResource ( Object resourceKey ); public Object TryFindResource( Object resourceKey ); Оба метода возвращают ссылку на ресурс с заданным ключом, если ключ найден. Если ресурс не найден, метод FindResource бросает исключение, а метод TryFindResource возвращает null. В примере в обработчике English_Checked (события Checked радиокнопки) выполняется поиск ресурса с ключом key_English_Menu. Если ресурс найден и может быть приведен к типу ContextMenu, он используется как значение свойства ContextMenu для ListBox1. private void English_Checked(object sender, RoutedEventArgs e) { ContextMenu menu = listBox1.TryFindResource("key_English_Menu") as ContextMenu; if (menu != null) listBox1.ContextMenu = menu; }

Статические и динамические ресурсы WPF После того, как ресурс определен, на него можно ссылаться как в разметке, так и в коде. Ресурс можно использовать как статический или динамический. В разметке определены расширения StaticResource или DynamicResource. При обработке StaticResource просматриваются доступные словари ресурсов. Это происходит в процессе загрузки, в тот момент, когда свойству необходимо присвоить значение из статических ресурсов. При обработке DynamicResource ключ создает выражение, которое вычисляется только в процессе выполнения приложения, и тогда на его основе формируется значение. Синтаксический анализ ресурсов выполняется асинхронно. Ресурс, определенный в XAML, может быть не доступен даже в обработчике события Loaded для элемента, в котором он определен. Доступ к ресурсам из кода эквивалентен ссылке DynamicResource в XAML.

Cтатические ресурсы WPF В поисках необходимого ключа для статического ресурса словари ресурсов просматриваются в следующем порядке: словарь, определенный в элементе, для которого устанавливается свойство; словари логического дерева элементов в направлении к родительскому элементу вплоть до корневого элемента; словарь объекта Application. Словари просматриваются в процессе загрузки, в тот момент, когда свойству необходимо присвоить значение из статических ресурсов. Опережающие ссылки (forward reference) не поддерживаются статическими ресурсами. Внутри самого словаря ресурсов ссылку можно сделать только на ранее определенный ресурс.

Использование статических ресурсов WPF Статические ресурсы рекомендуется использовать в следующих случаях: Значение ресурса не изменяется после того, как на него была сделана ссылка в первый раз. Дизайн приложения концентрирует большую часть своих ресурсов в словарях уровня страниц или приложения и ссылки на ресурсы не вычисляются на основе поведения времени выполнения, например, при загрузке страниц. Статический ресурс можно использовать, чтобы присвоить значение свойству, которое не является свойством зависимостей. Можно создать словарь ресурсов и скомпилировать его в DLL для повторного использования. Ресурс используется для того, чтобы установить большое число свойств зависимостей. Свойства зависимостей имеют поддержку для эффективного кэширования, и в случае, когда значение свойства зависимости можно вычислить при загрузке, использование статических ресурсов повышает эффективность приложения.

Использование динамических ресурсов WPF В следующих случаях используются динамические ресурсы: Значение зависит от параметров, которые станут известны только в период выполнения, например, есть ссылки на значения SystemColors, SystemFonts или SystemParameters. Словарь ресурсов изменяется во время работы приложения. Ресурсы имеет внутренние связи, использующие опережающие ссылки (forward reference), которые не поддерживаются статическими ресурсами. Используется большой ресурс, который может быть запрошен не сразу после загрузки. В отличие от статических ресурсов, динамические ресурсы не загружаются до тех пор, пока не будут использованы. Создается стиль (style), в котором устанавливаются значения, зависящие от других установок пользователя. Ресурс используется элементом, для которого в процессе жизни приложения может быть заменен родительский элемент, что возможно изменяет область поиска ресурса.