Ресурсы и стили

Концепция ресурсов в Windows Phone 8.1

Последнее обновление: 31.10.2015

Ресурсы позволяют определить объекты, которые могут многократно использоваться в приложении в различных его частях. Итак, определим пару ресурсов и используем их:

<Page
    x:Class="HelloApp.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:HelloApp"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d"
    Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
    <Page.Resources>
        <SolidColorBrush x:Key="darkRedBrush" Color="DarkRed" />
        <SolidColorBrush x:Key="grayBrush" Color="DarkGray" />
    </Page.Resources>
    <Grid>
        <Button x:Name="button1" Background="{StaticResource grayBrush}" 
               Foreground="{StaticResource darkRedBrush}" Content="Кнопка" 
                VerticalAlignment="Top" />
    </Grid>
</Page>

Получится такая кнопка:

Resources in Windows Phone 8.1

Ресурсы определяются в свойстве Resources, которое есть у компонентов визуального интерфейса. В данном случае ресурсы определены как ресурсы элемента Page внутри тегов <Page.Resources> </Page.Resources>.

Каждый ресурс должен иметь уникальный идентификатор, которым выступает свойство x:Key.

Чтобы задать ресурс в качестве значения свойство, используется выражение {StaticResource ключ_ресурса}

В качестве ресурсов можно определить и более сложное содержимое, например:

<Page
    x:Class="HelloApp.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:HelloApp"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d"
    Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
    <Page.Resources>
        <SolidColorBrush x:Key="darkRedBrush" Color="DarkRed" />
        <SolidColorBrush x:Key="grayBrush" Color="DarkGray" />
        <StackPanel x:Key="R2D2Button" Orientation="Horizontal">
            <Ellipse Fill="Red" Width="30" Height="30" Stroke="Black" />
            <TextBlock Text="Record" FontSize="22" Width="100" Height="30" Margin="8" />
        </StackPanel>
    </Page.Resources>
    <Grid>
        <Button Background="{StaticResource grayBrush}" VerticalAlignment="Top"
               Foreground="{StaticResource darkRedBrush}" Content="{StaticResource R2D2Button}" />
    </Grid>
</Page>

Если у нас в проекте несколько страниц Page, и нам надо использовать одинаковые ресурсы на каждой из них, то мы можем определить данные ресурсы в качестве ресурсов всего приложении. Для этого откроем файл App.xaml и добавим в него определение ресурсов:

<Application
    x:Class="HelloApp.App"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:HelloApp">
    <Application.Resources>
        <SolidColorBrush x:Key="darkRedBrush" Color="DarkRed" />
        <SolidColorBrush x:Key="grayBrush" Color="DarkGray" />
        <StackPanel x:Key="R2D2Button" Orientation="Horizontal">
            <Ellipse Fill="Red" Width="30" Height="30" Stroke="Black" />
            <TextBlock Text="Record" FontSize="22" Width="100" Height="30" Margin="8" />
        </StackPanel>
    </Application.Resources>
</Application>

В этом случае данные ресурсы будут доступны из любого места приложения.

Темы

Кроме подключения ресурсов через StaticResource в разметке по умолчанию можно увидеть в определении Page такое выражение Background="{ThemeResource ApplicationPageBackgroundThemeBrush}". ThemeResource позволяет подключить ранее созданную тему для приложения. Подобных тем существует довольно много для разных типов элементов:

Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850