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 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 propiedad Resources. En este ejemplo, las referencias de la propiedad Resources están alineadas e inmediatamente seguidas de un uso del indexador que recupera un elemento ResourceDictionary con la clave RainbowBrush
de 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"];
}
Private Sub SetBGByResource(sender As Object, e As RoutedEventArgs)
Dim b As Button = TryCast(sender, Button)
b.Background = DirectCast(Me.Resources("RainbowBrush"), Brush)
End Sub
<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 colección Resources es hacer referencia a ellos desde otras partes de xaml, mediante una referencia de extensión de marcado {StaticResource} (o la referencia de extensión de marcado {ThemeResource} similar). Si desea acceder a la colección Resources 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.
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 TKey,TValue> IDictionary< si está programando con C# o Microsoft Visual Basic. 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 valor MergedDictionaries 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 item o el 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.