Condividi tramite


FrameworkElement.Resources Proprietà

Definizione

Ottiene il dizionario risorse definito in locale. In XAML è possibile stabilire gli elementi di risorsa come elementi figlio di un frameworkElement.Resources elemento di proprietà, tramite la sintassi della raccolta implicita 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>

Valore della proprietà

Dizionario delle risorse definito in locale corrente, in cui ogni risorsa può essere accessibile dalla chiave.

Esempio

In questo esempio viene illustrata una definizione XAML di un semplice dizionario Risorse che 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}" .../>

L'uso delle definizioni delle risorse XAML e dei riferimenti alle risorse è il modo tipico per usare la proprietà Resources. La maggior parte del tempo XAML può gestire scenari di risorse comuni. Tuttavia, è anche possibile usare la proprietà per accedere all'API della raccolta e quindi recuperare le risorse con il codice di runtime, se necessario per lo scenario. In questo esempio viene illustrato l'accesso al codice alla proprietà Resources. In questo esempio i riferimenti alle proprietà Resources sono inline e immediatamente seguiti da un utilizzo dell'indicizzatore che recupera un elemento ResourceDictionary con la chiave RainbowBrushstringa . Prendere nota del cast esplicito; il valore restituito per gli elementi dell'oggetto ResourceDictionary è sempre un oggetto non tipizzato.

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>

Commenti

Lo scopo principale degli elementi di una raccolta Resources consiste nel fare riferimento a loro da altre parti del codice XAML usando un riferimento all'estensione di markup {StaticResource} (o il riferimento all'estensione di markup {ThemeResource} simile). Se si vuole accedere all'insieme Resources in fase di esecuzione, è possibile usare l'API del modello pertinente per eseguire query, aggiungere o rimuovere elementi in ResourceDictionary.

Per altre informazioni ed esempi, vedere Riferimenti alle risorse ResourceDictionary e XAML.

Una risorsaDictionary è una raccolta chiave, basata su un modello IMap<K,V> se si esegue la programmazione con estensioni del componente Visual C++ (C++/CX) o un modello TKey,TValue> IDictionary< se si esegue la programmazione con C# o Microsoft Visual Basic. L'API usata nel codice per usare il dizionario e i relativi elementi riflettono il modello sottostante e quindi la lingua utilizzata per l'app.

L'applicazione ha anche una proprietà Resources , che può essere usata per archiviare le risorse che devono essere accessibili da più di una pagina nell'app. Le risorse per i controlli personalizzati possono essere archiviate anche in un file XAML separato creato dal modello di progetto predefinito di un controllo modello.

Gli elementi visualizzati in una raccolta di risorse XAML non sono necessariamente l'intera quantità di risorse definite da XAML disponibili in fase di esecuzione. Altre risorse sono disponibili in fase di esecuzione, a causa dell'influenza della proprietà MergeDictionary in un ResourceDictionary. Il valore MergeDictionary può introdurre altri dizionari, ad esempio le risorse definite dal sistema, ad esempio le risorse dai modelli di controllo XAML predefiniti. Le risorse specifiche del tema di runtime sono disponibili anche dalla proprietà ThemeDictionaries simile. Se si accede a una raccolta Resources in fase di esecuzione e si esegue una query per una chiave specifica usando il metodo Item indexer o Lookup , è possibile accedere e recuperare queste risorse. Per altre informazioni, vedere Riferimenti alle risorse ResourceDictionary e XAML. Application.Resources può inoltre fornire risorse disponibili per qualsiasi riferimento XAML nell'app e quindi estendere le risorse in qualsiasi dizionario FrameworkElement.Resources specificato.

Si applica a

Vedi anche