Procedura: definire e fare riferimento a una risorsa
In questo esempio viene mostrato come definire e fare riferimento a una risorsa utilizzando un attributo in Extensible Application Markup Language (XAML).
Esempio
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 Style PageBackground, 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="https://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="https://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>