FrameworkElement.Resources Propiedad
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
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 de recursos definido localmente, 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, un 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 de recursos es la manera habitual 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 insertadas 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 es siempre 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 de recursos De ResourceDictionary y XAML.
ResourceDictionary es una colección con claves, que se basa en una plantilla IMap<K,V> si está programando con C++, o una plantilla de TKey,TValue> de 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 idioma 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 de recursos XAML y ResourceDictionary. 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.