Share via


Cómo: Definir y hacer referencia a un recurso

Actualización: noviembre 2007

En este ejemplo se muestra cómo definir un recurso y hacer referencia a él utilizando un atributo en Lenguaje de marcado de aplicaciones extensible (XAML).

Ejemplo

En el ejemplo siguiente se definen dos tipos de recursos: un recurso SolidColorBrush y varios recursos Style. El recurso SolidColorBrushMyBrush se utiliza para proporcionar el valor de varias propiedades, cada una de las cuales toma un valor de tipo Brush. Cada uno de los recursos Style (PageBackground, TitleText y Label) está destinado a un tipo de control determinado. Los estilos establecen varias propiedades diferentes para los controles de destino, cuando se hace referencia a ese recurso de estilo por su clave de recurso y se utiliza para establecer la propiedad Style de varios elementos de control concretos definidos en XAML.

Observe que una de las propiedades de de los establecedores (setters) del estilo Label también hace referencia al recurso MyBrush definido anteriormente. Se trata de una técnica común, pero es importante recordar que los recursos se analizan y escriben en un diccionario de recursos en el orden en que se indican. También se solicitan los recursos en el orden en que se encuentran en el diccionario si se utiliza Extensión de marcado StaticResource para hacer referencia a ellos desde el interior de otro recurso. Asegúrese de que todos los recursos a los que haga referencia se hayan definido en la colección de recursos antes del punto en que se solicita ese recurso. Si es necesario, puede omitir el orden estricto de creación de referencias a recursos utilizando la Extensión de marcado DynamicResource para hacer referencia lugar al recurso en tiempo de ejecución, pero debe tener en cuenta que esta técnica de DynamicResource influye en el rendimiento. Para obtener información detallada, consulte Información general sobre recursos.

<Page Name="root"
  xmlns="https://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="https://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>

Para obtener el ejemplo completo, vea Ejemplo Defining a Resource.

Vea también

Tareas

Ejemplo Defining a Resource

Conceptos

Información general sobre recursos

Aplicar estilos y plantillas