Практическое руководство. Определение и ссылка на ресурс
В этом примере показано, как определить ресурс и ссылаться на него с помощью атрибута в языке разметки расширяемых приложений (XAML).
Пример
В следующем примере определяются два типа ресурсов: ресурс SolidColorBrush и несколько Style ресурсов.
SolidColorBrush ресурс MyBrush
используется для определения значений нескольких свойств, каждое из которых принимает значение типа Brush. Ресурсы Style, PageBackground
, TitleText
и Label
нацелены на каждый конкретный тип элемента управления. Стили задают различные свойства целевых элементов управления, когда этот ресурс стиля ссылается на ключ ресурса и используется для задания свойства Style нескольких определенных элементов управления, определенных в XAML.
Обратите внимание, что одно из свойств в установках стиля Label
также ссылается на ресурс MyBrush
, определённый ранее. Это распространенный способ, но важно помнить, что ресурсы анализируются и вводятся в словарь ресурсов в том порядке, в который они даны. Ресурсы также запрашиваются в порядке, указанном в словаре, если вы используете расширение разметки StaticResource, чтобы ссылаться на них из другого ресурса. Убедитесь, что любой ресурс, на который вы ссылаетесь, определен ранее в коллекции ресурсов, чем в том месте, где затем запрашивается этот ресурс. При необходимости можно обойти строгий порядок создания ссылок на ресурсы с помощью расширения разметки DynamicResource DynamicResource для ссылки на ресурс во время выполнения, но следует учитывать, что этот метод DynamicResource имеет последствия для производительности. Подробности см. в ресурсах XAML .
<Page Name="root"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Page.Resources>
<SolidColorBrush x:Key="MyBrush" Color="Gold"/>
<Style TargetType="Border" x:Key="PageBackground">
<Setter Property="Background" Value="Blue"/>
</Style>
<Style TargetType="TextBlock" x:Key="TitleText">
<Setter Property="Background" Value="Blue"/>
<Setter Property="DockPanel.Dock" Value="Top"/>
<Setter Property="FontSize" Value="18"/>
<Setter Property="Foreground" Value="#4E87D4"/>
<Setter Property="FontFamily" Value="Trebuchet MS"/>
<Setter Property="Margin" Value="0,40,10,10"/>
</Style>
<Style TargetType="TextBlock" x:Key="Label">
<Setter Property="DockPanel.Dock" Value="Right"/>
<Setter Property="FontSize" Value="8"/>
<Setter Property="Foreground" Value="{StaticResource MyBrush}"/>
<Setter Property="FontFamily" Value="Arial"/>
<Setter Property="FontWeight" Value="Bold"/>
<Setter Property="Margin" Value="0,3,10,0"/>
</Style>
</Page.Resources>
<StackPanel>
<Border Style="{StaticResource PageBackground}">
<DockPanel>
<TextBlock Style="{StaticResource TitleText}">Title</TextBlock>
<TextBlock Style="{StaticResource Label}">Label</TextBlock>
<TextBlock DockPanel.Dock="Top" HorizontalAlignment="Left" FontSize="36" Foreground="{StaticResource MyBrush}" Text="Text" Margin="20" />
<Button DockPanel.Dock="Top" HorizontalAlignment="Left" Height="30" Background="{StaticResource MyBrush}" Margin="40">Button</Button>
<Ellipse DockPanel.Dock="Top" HorizontalAlignment="Left" Width="100" Height="100" Fill="{StaticResource MyBrush}" Margin="40" />
</DockPanel>
</Border>
</StackPanel>
</Page>
См. также
.NET Desktop feedback