Ресурси XAML

Вище ми говорили про можливість створення стилів Які, як було зазначено, не повинні входити в дерево XAML-елементів Всі стилі ми записували всередині властивості Resources, Що належить обєкту Page Подібна властивість є у всіх обєктів XAML, породжених відFrameworkElement, А також у обєкта додатка (Application) Завдяки ресурсам розробник може зберігати стилі та інші частини XAML-коду до запитання Так, в ресурси можна виділяти обєкти деяких типів, стилі, шаблони даних і ін Фактично, властивістьResources посилається на певний словник, який може бути доступний як з коду, так і з XAML

Якщо ми використовуємо ресурси на рівні додатку, то доступ до ресурсу може бути здійснений лише по ключу, незалежно від того, в якому з батьківських елементів оголошений ресурс Якщо же ресурс був оголошений в одному з дочірніх елементів, то він не може використовуватися батьківськими елементами

Розглянемо невеликий приклад

&ltPageResources&gt

&ltLinearGradientBrush x:Key=&quotmyBrush&quot&gt

&ltGradientStop Color=&quotRed&quot Offset=&quot0&quot&gt&lt/GradientStop&gt

&ltGradientStop Color=&quotGreen&quot Offset=&quot1&quot&gt&lt/GradientStop&gt

&lt/LinearGradientBrush&gt

&lt/PageResources&gt

&ltStackPanel&gt

&ltButton Width=&quot100&quot Height=&quot50&quot Background=&quot{StaticResource myBrush}&quot Content=&quotButton 1&quot Margin=&quot5&quot&gt

&lt/Button&gt

&lt/StackPanel&gt

Ми визначили в ролі ресурсу градиентную кисть, вказавши як ключа (він же є імям) myBrush Даний ключ буде використовуватися для доступу до ресурсу Як Ви могли помітити, доступ до ресурсу визначається за допомогою розширення розміткиStaticResource Тут досить вказати імя ключа як параметр

У прикладі вище ми розмістили ресурси всередину елемента Page, Який є контейнером для всього нашого інтерфейсу Це забезпечує видимість ресурсів для будь-якого дочірнього елемента Якщо ми хочемо обмежити область

видимості, то ресурси можна розмістити в будь-якому з дочірніх елементів,

наприклад в StackPanel

&ltStackPanel&gt

&ltStackPanelResources&gt

&ltLinearGradientBrush x:Key=&quotmyBrush&quot&gt

&ltGradientStop Color=&quotRed&quot Offset=&quot0&quot&gt&lt/GradientStop&gt

&ltGradientStop Color=&quotGreen&quot Offset=&quot1&quot&gt&lt/GradientStop&gt

&lt/LinearGradientBrush&gt

&lt/StackPanelResources&gt

&ltButton Width=&quot100&quot Height=&quot50&quot Background=&quot{StaticResource myBrush}&quot Content=&quotButton 1&quot Margin=&quot5&quot&gt

&lt/Button&gt

&lt/StackPanel&gt

Таким чином, для кінцевого елемента керування немає ніякої різниці, де знаходяться ресурси Головне, щоб вони були в області видимості елемента, а доступ до них здійснюється за однаковою схемою

Нарешті, якщо Ви хочете забезпечити ресурсів глобальну область видимості, то можете розмістити їх на рівні всього програми Такий підхід дуже ефективний при розробці складних додатків, то є додатків, що володіють декількома вікнами і механізмом навігації між ними

Ось приклад визначення цих же ресурсів усередині файлу програми

&ltApplication xmlns=&quothttp://schemasmicrosoftcom/winfx/2006/xaml/presentation&quot xmlns:x=&quothttp://schemasmicrosoftcom/winfx/2006/xaml&quot xmlns:local=&quotusing:Application4&quot&gt

&ltApplicationResources&gt

&ltLinearGradientBrush x:Key=&quotmyBrush&quot&gt

&ltGradientStop Color=&quotRed&quot Offset=&quot0&quot&gt&lt/GradientStop&gt

&ltGradientStop Color=&quotGreen&quot Offset=&quot1&quot&gt&lt/GradientStop&gt

&lt/LinearGradientBrush&gt

&lt/ApplicationResources&gt

&lt/Application&gt

Сергій Лутай, Сергій Байдачний, Windows 8 для C # розробників

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*