Esporta (0) Stampa
Espandi tutto

Proprietà FrameworkElement.Resources

Aggiornamento: novembre 2007

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/xaml/presentation

public ResourceDictionary Resources { get; set; }
/** @property */
public ResourceDictionary get_Resources()
/** @property */
public  void set_Resources(ResourceDictionary value)

public function get Resources () : ResourceDictionary
public function set Resources (value : ResourceDictionary)
<object>
  <object.Resources>
    oneOrMoreResourceElements
  </object.Resources>
</object>
oneOrMoreResourceElements
                    Uno o più elementi oggetto ognuno dei quali definisce una risorsa. Ogni elemento della proprietà di risorsa all'interno di ogni ResourceDictionary deve avere un valore univoco per Attributo x:Key, che funge da chiave univoca quando i valori vengono recuperati da 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 un 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 case 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à della finestra di progettazione 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 effettive, 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 di runtime o tramite altre tecniche XAML, ad esempio stili o riferimenti di estensione 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 Terminologia 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 ulteriori informazioni, 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 dell'insieme 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 Cenni preliminari sulle risorse.

<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>


Per l'esempio completo, vedere Esempio di definizione di una risorsa.

Windows Vista

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

.NET Framework

Supportato in: 3.5, 3.0

Aggiunte alla community

AGGIUNGI
Mostra:
© 2015 Microsoft