Instrukcje: definiowanie i odwołowanie się do zasobu
W tym przykładzie pokazano, jak zdefiniować zasób i odwołać się do niego przy użyciu atrybutu w języku XAML (Extensible Application Markup Language).
Przykład
W poniższym przykładzie zdefiniowano dwa typy zasobów: zasób SolidColorBrush i kilka Style zasobów. Zasób SolidColorBrushMyBrush
służy do dostarczania wartości kilku właściwości, z których każda ma wartość typu Brush. Zasoby Style, PageBackground
, TitleText
i Label
są skierowane na określony typ kontroli. Style ustawiają różnorodne właściwości na kontrolkach docelowych, gdy zasób stylu jest przywoływany za pomocą klucza zasobu i używany do ustawienia właściwości Style w przypadku kilku konkretnych elementów kontrolnych zdefiniowanych w XAML.
Należy pamiętać, że jedna z właściwości w ustawieniach stylu Label
odwołuje się również do zasobu MyBrush
zdefiniowanego wcześniej. Jest to powszechna technika, ale ważne jest, aby pamiętać, że zasoby są analizowane i wprowadzane do słownika zasobów w podanej kolejności. Zasoby są również przywoływane w kolejności znalezionej w słowniku, jeśli używasz rozszerzenia znaczników StaticResource, aby odwoływać się do nich z innego zasobu. Upewnij się, że dowolny zasób, do którego odwołujesz się, jest zdefiniowany wcześniej w kolekcji zasobów, niż w przypadku, gdy ten zasób jest następnie żądany. W razie potrzeby można obejść ścisłą kolejność tworzenia odwołań do zasobów, używając rozszerzenia znacznika DynamicResource, aby odwołać się do zasobu w czasie wykonywania. Należy jednak pamiętać, że ta technika DynamicResource ma wpływ na wydajność. Aby uzyskać szczegółowe informacje, zobacz zasoby 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>
Zobacz też
.NET Desktop feedback