Ресурсы

Платформа.NET поддерживает инфраструктуру для работы с ресурсами – информационными фрагментами приложения, представляющими изображения, таблицы строк или иные данные. WPF расширяет базовые возможности.NET, предоставляя поддержку двух видов ресурсов – двоичных и логических.

Двоичные ресурсы

Двоичный ресурс в WPF – это традиционный ресурс с точки зрения платформы.NET. Обычно на этапе разработки двоичный ресурс представлен в виде файла в составе проекта. Такой файл может быть внедрён в сборку.NET или существовать в виде отдельного компонента, логически связанного со сборкой. Это поведение настраивается в Visual Studio в окне свойств файла. Установите свойство Build Action в значение Resource для внедрения ресурса, или в Content для закрепления связи между отдельным файлом ресурса и сборкой.

Для доступа к двоичным ресурсам в WPF обычно используется универсальный идентификатор ресурса в формате упакованного URI[4]. Упакованный URI имеет вид pack://контейнер/путь. Ниже представлены типичные примеры упакованных URI:

pack://application:,,,/img.png – ресурс img.png (изображение), внедрённый в текущую сборку, или файл img.png, ассоциированный со сборкой при компиляции.

pack://application:,,,/images/img.png – аналогично предыдущего URI, но в проекте Visual Studio файл img.png располагался в подкаталоге images.

pack://application:,,,/MyAssembly;component/img.png – ресурс img.png, внедрённый в сборку MyAssembly.dll.

images/img.png – относительный упакованный URI для ссылки на ресурс, связанный с текущей сборкой.

Для работы с URI служит класс System.Uri. Рассмотрим примеры связывания элемента Image с изображением, представленным в виде ресурса:

// этот объект описывает абсолютный URI

var absoluteUri = new Uri("pack://application:,,,/images/img.png");

// этот объект описывает относительный URI

var relativeUri = new Uri("images/img.png", UriKind.Relative);

// создадим элемент Image

// и свяжем его с bitmap-изображением, используя абсолютный URI

var picture = new Image();

picture.Source = new BitmapImage(absoluteUri);

В разметке XAML ссылки на ресурсы обычно задаются простыми строками, так как имеется стандартный конвертер из строки в объект URI:

<Image x:Name="picture" Source="images/img.png" />


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: