Anvisningar: Definiera och referera till en resurs
Det här exemplet visar hur du definierar en resurs och refererar till den med hjälp av ett attribut i XAML (Extensible Application Markup Language).
Exempel
I följande exempel definieras två typer av resurser: en SolidColorBrush resurs och flera Style resurser. Den SolidColorBrush resursen MyBrush
används för att ange värdet för flera egenskaper som var och en tar ett Brush typvärde. Resurserna Style, PageBackground
, TitleText
och Label
inriktar sig på en viss kontrolltyp. Formatmallarna anger en mängd olika egenskaper för de riktade kontrollerna, när den formatresursen refereras till av resursnyckeln och används för att ange egenskapen Style för flera specifika kontrollelement som definierats i XAML.
Observera att en av egenskaperna inom inställarna i Label
formatmallen också refererar till resursen MyBrush
, som definierades tidigare. Det här är en vanlig teknik, men det är viktigt att komma ihåg att resurser parsas och anges i en resursordlista i den ordning de ges. Resurser begärs även i den ordning som finns angiven i ordlistan om du använder StaticResource Markup Extension för att referera till dem från en annan resurs. Kontrollera att alla resurser som du refererar till har definierats tidigare i resurssamlingen än där resursen sedan begärs. Om det behövs kan du kringgå den strikta skapandeordningen av resursreferenser med hjälp av ett DynamicResource Markup-tillägg för att referera till resursen vid körning i stället, men du bör vara medveten om att den här DynamicResource-tekniken har prestandakonsekvenser. Mer information finns i XAML-resurser.
<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>
Se även
.NET Desktop feedback