Procedure: Een resource definiëren en ernaar verwijzen
In dit voorbeeld ziet u hoe u een resource definieert en ernaar verwijst met behulp van een kenmerk in Extensible Application Markup Language (XAML).
Voorbeeld
In het volgende voorbeeld worden twee typen resources gedefinieerd: een SolidColorBrush-resource en verschillende Style resources. De SolidColorBrush resource MyBrush
wordt gebruikt om de waarde op te geven van verschillende eigenschappen die elk een Brush typewaarde aannemen. De resources Style, PageBackground
, TitleText
en Label
richten elk op een bepaald type besturingselement. De stijlen stellen verschillende eigenschappen in voor de doelbesturingselementen, wanneer naar die stijlresource wordt verwezen door de resourcesleutel en wordt gebruikt om de eigenschap Style van verschillende specifieke besturingselementen in te stellen die zijn gedefinieerd in XAML.
Houd er rekening mee dat een van de eigenschappen in de setters van de stijl Label
ook verwijst naar de MyBrush
resource die eerder is gedefinieerd. Dit is een veelgebruikte techniek, maar het is belangrijk om te onthouden dat resources worden geparseerd en ingevoerd in een resourcewoordenlijst in de volgorde waarin ze worden gegeven. Resources worden ook aangevraagd door de volgorde in de woordenlijst als u de StaticResource Markup-extensie gebruikt om ernaar te verwijzen vanuit een andere resource. Zorg ervoor dat een resource waarnaar u verwijst eerder is gedefinieerd in de resourcesverzameling dan waar die resource vervolgens wordt aangevraagd. Indien nodig kunt u de strikte volgorde van resourceverwijzingen omzeilen met behulp van een DynamicResource Markup Extension om te verwijzen naar de resource tijdens runtime, maar u moet er rekening mee houden dat deze DynamicResource-techniek prestatiegevolgen heeft. Zie XAML-resourcesvoor meer informatie.
<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>
Zie ook
.NET Desktop feedback