Informazioni
L'argomento richiesto è visualizzato di seguito, ma non è incluso in questa libreria.

Proprietà FrameworkElement.Resources

Ottiene o imposta il dizionario risorse definito localmente.

Spazio dei nomi:  System.Windows
Assembly:  PresentationFramework (in PresentationFramework.dll)
XMLNS per XAML: http://schemas.microsoft.com/winfx/2006/xaml/presentation, http://schemas.microsoft.com/netfx/2007/xaml/presentation

[AmbientAttribute]
public ResourceDictionary Resources { get; set; }
<object>
  <object.Resources>
    oneOrMoreResourceElements
  </object.Resources>
</object>

Valor XAML

oneOrMoreResourceElements

Uno o più elementi oggetto ognuno dei quali definisce una risorsa. Ogni elemento proprietà della risorsa all'interno di ciascun oggetto ResourceDictionary deve avere un valore univoco per Direttiva x:Key, che funge da chiave univoca quando i valori vengono recuperati dall'oggetto ResourceDictionary.

Valore proprietà

Tipo: System.Windows.ResourceDictionary
Dizionario risorse corrente definito localmente, dove è possibile accedere a ogni risorsa con una chiave.

I dizionari risorse che possono essere definiti completamente o parzialmente in Extensible Application Markup Language (XAML) vengono solitamente creati come elemento della proprietà e si trovano in genere nell'elemento radice di qualsiasi pagina singola o dell'applicazione. Posizionando il dizionario risorse a questo livello semplifica la ricerca dai singoli elementi figlio nella pagina (o da qualsiasi pagina, nel caso dell'applicazione). Nella maggior parte degli scenari dell'applicazione si consiglia di definire gli stili come elementi oggetto all'interno di un dizionario risorse oppure come risorse esterne, in modo che l'intera risorsa dello stile possa essere indipendente. Questo approccio consente di separare le responsabilità del progettista da quelle dello sviluppatore mediante la separazione dei file fisici da modificare.

Notare che questa proprietà restituisce solo il dizionario risorse dichiarato direttamente all'interno di quell'elemento. Questo approccio è diverso rispetto al processo di ricerca di risorse effettivo, in cui un elemento figlio può accedere a qualsiasi risorsa definita in ogni elemento padre, procedendo nella ricerca in modo ricorsivo verso l'alto.

Alle risorse è inoltre possibile fare riferimento a livello di codice dall'interno dell'insieme, ma è opportuno sapere che le risorse create in XAML non saranno assolutamente accessibili finché non verrà generato Loaded dall'elemento che dichiara il dizionario. Le risorse vengono infatti analizzate in modo asincrono e nemmeno l'evento Loaded garantisce che sia possibile fare riferimento a una risorsa definita da XAML. Per questo motivo si consiglia, in generale, di accedere solo alle risorse definite da XAML a livello di codice runtime o tramite altre tecniche XAML, ad esempio stili o riferimenti alle estensioni delle risorse per i valori dell'attributo. Quando si accede a risorse tramite codice, il processo è essenzialmente equivalente a un riferimento a DynamicResource effettuato da XAML.

L'oggetto ResourceDictionary sottostante supporta i metodi richiesti per aggiungere, rimuovere o eseguire una query sulle risorse dall'interno dell'insieme utilizzando codice. La proprietà Resources può essere impostata per supportare scenari in cui è prevista la sostituzione completa dell'insieme di risorse di un elemento per ottenere un oggetto ResourceDictionary nuovo o diverso.

La sintassi XAML illustrata non include un elemento per ResourceDictionary. Di seguito è riportato un esempio di sintassi con insieme implicito; il tag che rappresenta l'elemento dell'insieme può essere omesso. Gli elementi aggiunti all'insieme come elementi vengono invece specificati. Per ulteriori informazioni sugli insiemi impliciti e su XAML, vedere Descrizione dettagliata della sintassi XAML. Un caso in cui ResourceDictionary viene comunque specificato in modo esplicito come elemento è quello in cui si procede all'introduzione di un dizionario unito; in tal caso in genere non sono presenti elementi figlio per tale oggetto ResourceDictionary. Per informazioni dettagliate, vedere Dizionari risorse uniti.

In questo esempio viene mostrato come definire e fare riferimento a una risorsa utilizzando un attributo in Extensible Application Markup Language (XAML).

Nell'esempio riportato di seguito vengono definiti due tipi di risorse: una risorsa SolidColorBrush e più risorse Style. La risorsa MyBrush di tipo SolidColorBrush viene utilizzata per ottenere il valore di diverse proprietà, ognuna delle quali accetta un valore di tipo Brush. Le risorse StylePageBackground, TitleText e Label sono destinate ciascuna a un particolare tipo di controllo. Gli stili consentono di impostare diverse proprietà sui controlli di destinazione se, per fare riferimento a tale risorsa di stile che viene utilizzata per impostare la proprietà Style di diversi elementi di controllo specifici definiti in XAML, si utilizza la chiave di risorsa.

Notare che una delle proprietà all'interno dei metodi di impostazione dello stile Label fa riferimento anche alla risorsa MyBrush definita in precedenza. Si tratta di una tecnica comune; tuttavia è importante ricordare che le risorse vengono analizzate e inserite in un dizionario nell'ordine in cui vengono specificate. Le risorse vengono inoltre richieste nell'ordine rilevato all'interno del dizionario, se si utilizza Estensione del markup StaticResource per fare riferimento a queste risorse dall'interno di un'altra risorsa. Verificare che qualsiasi risorsa a cui si fa riferimento venga definita, all'interno della raccolta delle risorse, in una posizione precedente rispetto a quella in cui tale risorsa è richiesta. Se necessario, è possibile ovviare al rigido ordine di creazione dei riferimenti alle risorse utilizzando un oggetto Estensione del markup DynamicResource per fare riferimento alla risorsa in fase di esecuzione, ma occorre tenere presente che questa tecnica DynamicResource incide sulle prestazioni. Per informazioni dettagliate, vedere Risorse XAML.


<Page Name="root"
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
  <Page.Resources>
    <SolidColorBrush x:Key="MyBrush" Color="Gold"/>
    <Style TargetType="Border" x:Key="PageBackground">
      <Setter Property="Background" Value="Blue"/>
    </Style>
    <Style TargetType="TextBlock" x:Key="TitleText">
      <Setter Property="Background" Value="Blue"/>
      <Setter Property="DockPanel.Dock" Value="Top"/>
      <Setter Property="FontSize" Value="18"/>
      <Setter Property="Foreground" Value="#4E87D4"/>
      <Setter Property="FontFamily" Value="Trebuchet MS"/>
      <Setter Property="Margin" Value="0,40,10,10"/>
    </Style>
    <Style TargetType="TextBlock" x:Key="Label">
      <Setter Property="DockPanel.Dock" Value="Right"/>
      <Setter Property="FontSize" Value="8"/>
      <Setter Property="Foreground" Value="{StaticResource MyBrush}"/>
      <Setter Property="FontFamily" Value="Arial"/>
      <Setter Property="FontWeight" Value="Bold"/>
      <Setter Property="Margin" Value="0,3,10,0"/>
    </Style>
  </Page.Resources>
  <StackPanel>
    <Border Style="{StaticResource PageBackground}">
      <DockPanel>
        <TextBlock Style="{StaticResource TitleText}">Title</TextBlock>
        <TextBlock Style="{StaticResource Label}">Label</TextBlock>
        <TextBlock DockPanel.Dock="Top" HorizontalAlignment="Left" FontSize="36" Foreground="{StaticResource MyBrush}" Text="Text" Margin="20" />
        <Button DockPanel.Dock="Top" HorizontalAlignment="Left" Height="30" Background="{StaticResource MyBrush}" Margin="40">Button</Button>
        <Ellipse DockPanel.Dock="Top" HorizontalAlignment="Left" Width="100" Height="100" Fill="{StaticResource MyBrush}" Margin="40" />
      </DockPanel>
    </Border>
  </StackPanel>
</Page>


.NET Framework

Supportato in: 4.5, 4, 3.5, 3.0

.NET Framework Client Profile

Supportato in: 4, 3.5 SP1

Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (ruoli di base del server non supportati), Windows Server 2008 R2 (ruoli di base del server supportati con SP1 o versione successiva, Itanium non supportato)

.NET Framework non supporta tutte le versioni di ciascuna piattaforma. Per un elenco delle versioni supportate, vedere Requisiti di sistema di .NET Framework.

Aggiunte alla community

Mostra:
© 2014 Microsoft