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 SolidColorBrush risorsa e diverse Style risorse. La SolidColorBrush risorsa MyBrush viene usata per fornire il valore di diverse proprietà che accettano un Brush valore di tipo. Le Style risorse PageBackgroundTitleText e Label ogni destinazione è un particolare tipo di controllo. Gli stili impostano un'ampia gamma di proprietà diverse nei controlli di destinazione, quando tale risorsa di stile fa riferimento alla chiave di risorsa e viene usata per impostare la Style proprietà di diversi elementi di controllo specifici definiti in XAML.

Si noti che una delle proprietà all'interno dei setter dello Label stile fa riferimento anche alla MyBrush risorsa 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 anche dall'ordine trovato all'interno del dizionario se si usa l'estensione di markup StaticResource per farvi riferimento dall'interno di 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'estensione di markup DynamicResource per fare riferimento alla risorsa in fase di esecuzione, ma è necessario tenere presente che questa tecnica DynamicResource ha conseguenze sulle prestazioni. Per informazioni dettagliate, vedi 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>

Vedi anche