Gewusst wie: Definieren einer Ressource und Verweisen auf eine Ressource
Dieses Beispiel zeigt, wie eine Ressource definiert und wie in Extensible Application Markup Language (XAML) mithilfe eines Attributs auf sie verwiesen wird.
Beispiel
Im folgenden Beispiel werden zwei Typen von Ressourcen definiert: eine SolidColorBrush-Ressource und mehrere Style-Ressourcen. Mit der SolidColorBrush-Ressource MyBrush werden die Werte mehrerer Eigenschaften bereitgestellt, von denen jede einen Wert vom Brush-Typ akzeptiert. Die Style-Ressourcen PageBackground, TitleText und Label zielen jeweils auf einen bestimmten Steuerelementtyp ab. Die Stile legen zahlreiche verschiedene Eigenschaften für die Zielsteuerelemente fest, wenn mit einen Ressourcenschlüssel auf diesen Stil verwiesen wird und er zum Festlegen der Style-Eigenschaft für mehrere bestimmte Steuerelemente verwendet wird, die in XAML definiert sind.
Beachten Sie, dass eine der Eigenschaften in den Settern des Label-Stils auch auf die bereits definierte MyBrush-Ressource verweist. Es handelt sich dabei um eine gängige Technik. Sie sollten jedoch nicht vergessen, dass Ressourcen analysiert und in der ihnen zugewiesenen Reihenfolge in ein Ressourcenwörterbuch eingegeben werden. Ressourcen werden auch in der Reihenfolge angefordert, in der sie im Wörterbuch gefunden werden, wenn Sie mit StaticResource-Markuperweiterung aus einer anderen Ressource auf sie verweisen. Stellen Sie sicher, dass jede Ressource, auf die Sie verweisen, bereits zuvor in der Ressourcenauflistung definiert sein muss, bevor sie angefordert wird. Sie können diese strenge Erstellungsreihenfolge der Ressourcenverweise ggf. umgehen, indem Sie stattdessen mit DynamicResource-Markuperweiterung zur Laufzeit auf die Ressource verweisen. Diese DynamicResource-Technik wirkt sich jedoch auf die Leistung aus. Weitere Informationen finden Sie unter Übersicht über Ressourcen.
<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>