FrameworkElement.Resources Propriedade
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Obtém o dicionário de recursos definido localmente. Em XAML, você pode estabelecer itens de recurso como elementos de objeto filho de um frameworkElement.Resources
elemento de propriedade, por meio da sintaxe de coleção 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 da propriedade
O dicionário atual definido localmente de recursos, em que cada recurso pode ser acessado por sua chave.
Exemplos
Este exemplo mostra uma definição XAML de um dicionário de recursos simples que contém um item, um 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}" .../>
Usar definições de recursos XAML e referências de recursos é a maneira típica de usar a propriedade Resources. Na maioria das vezes, o XAML sozinho pode lidar com cenários comuns de recursos. Mas você também pode usar a propriedade para acessar a API de coleção e, portanto, recuperar recursos com código de runtime, se isso for necessário para o seu cenário. Este exemplo mostra o acesso de código à propriedade Resources. Neste exemplo, as referências da propriedade Resources são embutidas e seguidas imediatamente por um uso do indexador que recupera um item ResourceDictionary com a chave RainbowBrush
de cadeia de caracteres . Observe a conversão explícita; o valor retornado para itens do ResourceDictionary é sempre um objeto não tipado.
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>
Comentários
A principal finalidade dos itens em uma coleção Resources é fazer referência a eles de outras partes do XAML, usando uma referência de extensão de marcação {StaticResource} (ou a referência de extensão de marcação {ThemeResource} semelhante). Se você quiser acessar a coleção Resources em tempo de execução, poderá usar a API do modelo relevante para consultar, adicionar ou remover itens no ResourceDictionary.
Para obter mais informações e exemplos, consulte Referências de recursos ResourceDictionary e XAML.
Um ResourceDictionary é uma coleção com chave, que se baseia em um modelo de IMap<K,V> se você estiver programando com extensões de componente do Visual C++ (C++/CX) ou um modelo IDictionary<TKey,TValue> se estiver programando com C# ou Microsoft Visual Basic. A API que você usa no código para trabalhar com o dicionário e seus itens reflete o modelo subjacente e, portanto, do idioma que você está usando para seu aplicativo.
O aplicativo também tem uma propriedade Resources , que pode ser usada para armazenar recursos que devem ser acessíveis a partir de mais de uma página no aplicativo. Os recursos para controles personalizados também podem ser armazenados em um arquivo XAML separado que é criado pelo modelo de projeto padrão de um controle modelo.
Os itens que você vê em uma coleção de Recursos XAML não são necessariamente a totalidade dos recursos definidos por XAML disponíveis em runtime. Outros recursos estão disponíveis em runtime, devido à influência da propriedade MergedDictionaries em um ResourceDictionary. O valor MergedDictionaries pode introduzir outros dicionários, como os recursos definidos pelo sistema, como recursos dos modelos de controle XAML padrão. Recursos específicos do tema de runtime também estão disponíveis na propriedade ThemeDictionaries semelhante. Se você acessar uma coleção Resources em runtime e consultar uma chave específica usando o indexador item ou o método Lookup , poderá acessar e recuperar esses recursos. Para obter mais informações, consulte Referências de recursos de ResourceDictionary e XAML. Além disso, Application.Resources pode fornecer recursos que estão disponíveis para qualquer referência XAML no aplicativo e, portanto, estender os recursos em qualquer dicionário FrameworkElement.Resources fornecido.