Procedimiento Definir y hacer referencia a un recursoHow to: Define and Reference a Resource

En este ejemplo se muestra cómo definir un recurso y haga referencia a él mediante el uso de un atributo en Lenguaje XAML (Extensible Application Markup Language)Extensible Application Markup Language (XAML).This example shows how to define a resource and reference it by using an attribute in Lenguaje XAML (Extensible Application Markup Language)Extensible Application Markup Language (XAML).

EjemploExample

El siguiente ejemplo define dos tipos de recursos: un SolidColorBrush recursos y varios Style recursos.The following example defines two types of resources: a SolidColorBrush resource, and several Style resources. El SolidColorBrush recursos MyBrush se usa para proporcionar el valor de varias propiedades que cada toma un Brush tipo de valor.The SolidColorBrush resource MyBrush is used to provide the value of several properties that each take a Brush type value. El Style recursos PageBackground, TitleText y Label tengan como destino un tipo de control determinado.The Style resources PageBackground, TitleText and Label each target a particular control type. Los estilos establecen diversas propiedades diferentes en los controles de destino, cuando se hace referencia mediante la clave de recurso de ese recurso de estilo y se usa para establecer el Style propiedad de varios elementos de control específicos definidos en XAMLXAML.The styles set a variety of different properties on the targeted controls, when that style resource is referenced by resource key and is used to set the Style property of several specific control elements defined in XAMLXAML.

Tenga en cuenta que una de las propiedades dentro de los establecedores de la Label estilo también hace referencia a la MyBrush recurso definido anteriormente.Note that one of the properties within the setters of the Label style also references the MyBrush resource defined earlier. Esta es una técnica común, pero es importante recordar que se analizan y se celebra un diccionario de recursos en el orden en que se les asigna los recursos.This is a common technique, but it is important to remember that resources are parsed and entered into a resource dictionary in the order that they are given. También se solicitan los recursos por el orden en que se encuentra en el diccionario si usas el StaticResource Markup Extension para hacer referencia a ellos desde dentro de otro recurso.Resources are also requested by the order found within the dictionary if you use the StaticResource Markup Extension to reference them from within another resource. Asegúrese de que cualquier recurso que se hace referencia se definió anteriormente dentro de la colección de recursos que donde se solicita a continuación, ese recurso.Make sure that any resource that you reference is defined earlier within the resources collection than where that resource is then requested. Si es necesario, puede evitar el orden estricto de creación de referencias de recursos mediante el uso de un DynamicResource Markup Extension para hacer referencia al recurso en tiempo de ejecución en su lugar, pero debe tener en cuenta que este DynamicResource técnica tiene consecuencias en el rendimiento.If necessary, you can work around the strict creation order of resource references by using a DynamicResource Markup Extension to reference the resource at runtime instead, but you should be aware that this DynamicResource technique has performance consequences. Para obtener más información, consulte recursos XAML.For details, see XAML Resources.

<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>

Vea tambiénSee also