Freigeben über


So definieren und referenzieren Sie eine Ressource

In diesem Beispiel wird gezeigt, wie Sie eine Ressource definieren und mithilfe eines Attributs in Xaml (Extensible Application Markup Language) darauf verweisen.

Beispiel

Im folgenden Beispiel werden zwei Ressourcentypen definiert: eine SolidColorBrush Ressource und mehrere Style Ressourcen. Die SolidColorBrush Ressource MyBrush wird verwendet, um den Wert mehrerer Eigenschaften bereitzustellen, die jeweils einen Wert vom Typ Brush haben. Die Ressource Style sowie PageBackground, TitleText und Label zielen jeweils auf einen bestimmten Steuerelementtyp ab. Die Formatvorlagen legen eine Vielzahl verschiedener Eigenschaften für die Zielsteuerelemente fest, wenn über einen Ressourcenschlüssel auf diese Formatressource verwiesen wird und sie verwendet wird, um die Style-Eigenschaft mehrerer spezifischer Steuerelemente festzulegen, die in XAML definiert sind.

Beachten Sie, dass eine der Eigenschaften innerhalb der Setter der Label-Formatvorlage auch auf die vorher definierte MyBrush-Ressource verweist. Dies ist eine gängige Technik, aber es ist wichtig zu beachten, dass Ressourcen analysiert und in ein Ressourcenverzeichnis in der Reihenfolge eingegeben werden, in der sie angegeben werden. Ressourcen werden auch in der Reihenfolge abgefragt, in der sie im Wörterbuch zu finden sind, wenn Sie die StaticResource-Markup-Erweiterung verwenden, um darauf von einer anderen Ressource zu verweisen. Stellen Sie sicher, dass alle Ressourcen, auf die Sie verweisen, früher innerhalb der Ressourcensammlung definiert sind, als wo diese Ressource dann angefordert wird. Bei Bedarf können Sie die strenge Erstellungsreihenfolge der Ressourcenverweise umgehen, indem Sie eine DynamicResource-Markuperweiterung verwenden, um stattdessen auf die Ressource zur Laufzeit zu verweisen. Allerdings sollten Sie beachten, dass diese DynamicResource-Technik Leistungseinbußen zur Folge hat. Ausführliche Informationen finden Sie unter XAML-Ressourcen.

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

Siehe auch