Compartilhar via


Como definir e referenciar um recurso

Este exemplo mostra como definir um recurso e referenciá-lo usando um atributo em XAML (Extensible Application Markup Language).

Exemplo

O exemplo a seguir define dois tipos de recursos: um recurso de SolidColorBrush e vários recursos de Style. O recurso SolidColorBrushMyBrush é usado para fornecer o valor de várias propriedades, cada uma delas aceitando um valor do tipo Brush. Os recursos StylePageBackground, TitleText e Label cada um direciona um tipo de controle específico. Os estilos definem uma variedade de propriedades diferentes nos controles de destino, quando esse recurso de estilo é referenciado pela chave de recurso e é usado para definir a propriedade Style de vários elementos de controle específicos definidos em XAML.

Observe que uma das propriedades dentro dos setters do estilo Label também faz referência ao recurso MyBrush definido anteriormente. Essa é uma técnica comum, mas é importante lembrar que os recursos são analisados e inseridos em um dicionário de recursos na ordem em que são fornecidos. Recursos também serão solicitados pela ordem encontrada no dicionário se você usar a Extensão de marcação StaticResource para fazer referência a eles de dentro de outro recurso. Verifique se qualquer recurso referenciado é definido anteriormente na coleção de recursos do que onde esse recurso é solicitado. Se necessário, você pode contornar a ordem estrita de criação de referências de recursos usando uma Extensão de marcação DynamicResource para fazer referência ao recurso no runtime, porém você sempre deve estar ciente que essa técnica DynamicResource traz consequências para o desempenho. Para obter detalhes, consulte os recursos 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>

Consulte também