Esta documentación está archivada y no tiene mantenimiento.

FrameworkElement.Resources (Propiedad)

Actualización: noviembre 2007

Obtiene o establece el diccionario de recursos definido localmente.

Espacio de nombres:  System.Windows
Ensamblado:  PresentationFramework (en PresentationFramework.dll)
XMLNS para XAML: http://schemas.microsoft.com/winfx/xaml/presentation

public ResourceDictionary Resources { get; set; }
/** @property */
public ResourceDictionary get_Resources()
/** @property */
public  void set_Resources(ResourceDictionary value)

public function get Resources () : ResourceDictionary
public function set Resources (value : ResourceDictionary)
<object>
  <object.Resources>
    oneOrMoreResourceElements
  </object.Resources>
</object>
oneOrMoreResourceElements
                    Uno o más elementos de objeto, cada uno de los cuales define un recurso. Cada elemento de propiedad de recurso de ResourceDictionary debe tener un valor único para el x:Key (atributo), que actúa como clave única cuando se recuperan valores de ResourceDictionary.
                

Valor de propiedad

Tipo: System.Windows.ResourceDictionary
Diccionario de recursos actual definido localmente, donde se puede tener acceso a cada recurso por clave.

Los diccionarios de recursos que se pueden definir por completo o parcialmente en Lenguaje de marcado de aplicaciones extensible (XAML) se crean normalmente como un elemento de propiedad y están normalmente en el elemento raíz de cualquier página individual o de la aplicación. Colocar el diccionario de recursos en este nivel simplifica la búsqueda de elementos secundarios individuales en la página (o en cualquier página, en el caso de la aplicación). En la mayoría de los escenarios de aplicación, se recomienda que los estilos se definan como elementos de objeto dentro de un diccionario de recursos o como recursos externos para que el recurso de estilo completo pueda ser autónomo (este enfoque ayuda a dividir las responsabilidades del diseñador de las del programador separando los archivos físicos que se deben modificar).

Observe que esta propiedad devuelve sólo el diccionario de recursos declarado directamente dentro de ese elemento. Esto es diferente del proceso de búsqueda de recursos real, donde un elemento secundario puede tener acceso a cualquiera de los recursos definidos en cada elemento primario, que busca de forma recursiva y ascendente.

El código también puede hacer referencia a los recursos desde la colección, pero tenga en cuenta que no se puede tener acceso definitivamente a los recursos creados en XAML hasta que el elemento que declara el diccionario haya provocado el evento Loaded. De hecho, los recursos se analizan de forma asincrónica y ni siquiera el evento Loaded es una garantía de que se pueda hacer referencia a un recurso XAML definido. Por esta razón, normalmente sólo debe obtener acceso a los recursos XAML definidos como parte del código en tiempo de ejecución o a través de otras técnicas XAML como estilos o referencias de extensión de recursos para los valores de atributo. Al tener acceso a los recursos a través del código, es esencialmente equivalente a una referencia de extensión de marcado DynamicResource realizada desde XAML.

El objeto ResourceDictionary subyacente admite los métodos necesarios para agregar, quitar o consultar recursos desde la colección mediante código. La propiedad Resources se puede establecer para admitir el escenario de reemplazar completamente la colección de recursos de un elemento por un objeto ResourceDictionary nuevo o diferente.

Observe que la sintaxis XAML mostrada no incluye un elemento para ResourceDictionary. Éste es un ejemplo de sintaxis de colección implícita; se puede omitir una etiqueta que representa el elemento de colección. En su lugar, se especifican los elementos que se agregan como elementos a la colección. Para obtener más información sobre las colecciones implícitas y XAML, vea Terminología de la sintaxis de XAML. Un caso donde todavía se especifica ResourceDictionary explícitamente como elemento es cuando se introduce un diccionario combinado, en cuyo caso no hay normalmente elementos secundarios de ResourceDictionary. Para obtener información detallada, vea Diccionarios de recursos combinados.

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

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


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

Windows Vista

.NET Framework y .NET Compact Framework no admiten todas las versiones de cada plataforma. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.

.NET Framework

Compatible con: 3.5, 3.0
Mostrar: