FrameworkElement.Resources Propiedad

Definición

Obtiene el diccionario de recursos definido localmente. En XAML, puedes establecer elementos de recursos como elementos de objeto secundarios de un frameworkElement.Resources elemento de propiedad a través de la sintaxis de colección implícita xaml.

ResourceDictionary Resources();

void Resources(ResourceDictionary value);
public ResourceDictionary Resources { get; set; }
var resourceDictionary = frameworkElement.resources;
frameworkElement.resources = resourceDictionary;
Public Property Resources As ResourceDictionary
<frameworkElement>
  <frameworkElement.Resources>
    oneOrMoreResourceElements
  </frameworkElement.Resources>
</frameworkElement>

Valor de propiedad

Diccionario actual definido localmente de recursos, donde se puede acceder a cada recurso mediante su clave.

Ejemplos

En este ejemplo se muestra una definición XAML de un diccionario de recursos simple que contiene un elemento, una clase DataTemplate.

<Grid.Resources>
  <DataTemplate x:Key="CBTemplate">
    <Grid>
      <Grid.ColumnDefinitions>
        <ColumnDefinition />
        <ColumnDefinition />
      </Grid.ColumnDefinitions>
      <Image Grid.Column="0" Width="50" Height="50" 
        Source="{Binding Photo}" Stretch="Fill"/>
      <TextBlock Grid.Column="1" Text="{Binding Title}" 
        Margin="10" HorizontalAlignment="Left" FontSize="20"/>
    </Grid>
  </DataTemplate>
</Grid.Resources>
<GridView ItemTemplate="{StaticResource CBTemplate}" .../>

El uso de definiciones de recursos XAML y referencias a recursos es la manera típica de usar la propiedad Resources. La mayoría de las veces XAML solo puede controlar escenarios de recursos comunes. Pero también puede usar la propiedad para acceder a la API de recopilación y, por tanto, recuperar recursos con código en tiempo de ejecución, si es necesario para su escenario. En este ejemplo se muestra el acceso de código a la Resources propiedad . En este ejemplo, las Resources referencias de propiedad están alineadas e inmediatamente seguidas de un uso del indexador que recupera un elemento ResourceDictionary con la clave RainbowBrushde cadena . Anote la conversión explícita; el valor devuelto de los elementos de ResourceDictionary siempre es un objeto sin tipo.

void MainPage::SetBGByResource(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e)
{
  Button^ b = safe_cast<Windows::UI::Xaml::Controls::Button^>(sender);
  b->Background = safe_cast<Windows::UI::Xaml::Media::Brush^>(this->Resources->Lookup("RainbowBrush"));
}
void SetBGByResource(object sender, RoutedEventArgs e)
{
  Button b = sender as Button;
  b.Background = (Brush)this.Resources["RainbowBrush"];
}
<Page.Resources>
...
  <LinearGradientBrush x:Key="RainbowBrush">
    <GradientStop Color="Red" Offset="0.05" />
    <GradientStop Color="Orange" Offset="0.23" />
    <GradientStop Color="Yellow" Offset="0.41" />
    <GradientStop Color="Green" Offset="0.59" />
    <GradientStop Color="Blue" Offset="0.77" />
    <GradientStop Color="Purple" Offset="0.95" />
 </LinearGradientBrush>
</Page.Resources>

Comentarios

El propósito principal de los elementos de una Resources colección es hacer referencia a ellos desde otras partes de xaml, usando una referencia de extensión de marcado {StaticResource} (o la referencia de extensión de marcado {ThemeResource} similar). Si desea acceder a la Resources colección en tiempo de ejecución, puede usar la API de la plantilla pertinente para consultar, agregar o quitar elementos en ResourceDictionary.

Para obtener más información y ejemplos, consulta Referencias a recursos ResourceDictionary y XAML.

Un ResourceDictionary es una colección con claves, que se basa en una plantilla IMap<K,V> si está programando con extensiones de componentes de Visual C++ (C++/CX) o con una plantilla de TKey,TValue> IDictionary< si está programando con C#. La API que usas en el código para trabajar con el diccionario y sus elementos son reflectantes de la plantilla subyacente y, por tanto, del lenguaje que usas para la aplicación.

La aplicación también tiene una propiedad Resources , que se puede usar para almacenar recursos a los que se debe acceder desde más de una página de la aplicación. Los recursos para controles personalizados también se pueden almacenar en un archivo XAML independiente que se crea mediante la plantilla de proyecto predeterminada de un control con plantilla.

Los elementos que ves en una colección de recursos XAML no son necesariamente la totalidad de los recursos definidos por XAML disponibles en tiempo de ejecución. Otros recursos están disponibles en tiempo de ejecución, debido a la influencia de la propiedad MergedDictionaries en un ResourceDictionary. El MergedDictionaries valor puede introducir otros diccionarios, como los recursos definidos por el sistema, como los recursos de las plantillas de control XAML predeterminadas. Los recursos específicos del tema en tiempo de ejecución también están disponibles en la propiedad ThemeDictionaries similar. Si accede a una colección resources en tiempo de ejecución y consulta una clave específica mediante el indexador o el Item método Lookup , puede acceder a estos recursos y recuperarlos. Para obtener más información, consulta Referencias a recursos ResourceDictionary y XAML. Además, Application.Resources puede proporcionar recursos que están disponibles para cualquier referencia XAML en la aplicación y, por tanto, ampliar los recursos en cualquier diccionario FrameworkElement.Resources determinado.

Se aplica a

Consulte también