Condividi tramite


Procedura: Definire e fare riferimento a una risorsa

Questo esempio illustra come definire una risorsa e farvi riferimento usando un attributo in XAML (Extensible Application Markup Language).

Esempio

L'esempio seguente definisce due tipi di risorse: una risorsa SolidColorBrush e diverse risorse Style. Il MyBrush risorsa SolidColorBrush viene usato per fornire il valore di diverse proprietà che accettano un valore di tipo Brush. Le risorse Style, PageBackground, TitleText e Label mirano ciascuna a un particolare tipo di controllo. Gli stili impostano una varietà di proprietà diverse nei controlli di destinazione, quando tale risorsa di stile è richiamata tramite chiave di risorsa e viene usata per impostare la proprietà Style di diversi elementi di controllo specifici definiti in XAML.

Si noti che una delle proprietà all'interno dei setter dello stile Label fa riferimento anche alla risorsa MyBrush definita in precedenza. Si tratta di una tecnica comune, ma è importante ricordare che le risorse vengono analizzate e immesse in un dizionario risorse nell'ordine in cui vengono fornite. Le risorse vengono richieste nell'ordine in cui si trovano nel dizionario anche quando si utilizza l'estensione di markup StaticResource per riferirsi a esse da un'altra risorsa. Assicurarsi che qualsiasi risorsa a cui si fa riferimento sia definita in precedenza all'interno della raccolta di risorse rispetto alla posizione in cui viene quindi richiesta tale risorsa. Se necessario, è possibile aggirare l'ordine di creazione rigoroso dei riferimenti alle risorse usando un DynamicResource Markup Extension per fare riferimento alla risorsa in fase di esecuzione, ma è necessario tenere presente che questa tecnica DynamicResource ha conseguenze 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>

Vedere anche