Udostępnij za pośrednictwem


Jak definiować i tworzyć odwołanie 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: SolidColorBrush zasób i kilka Style zasobów. Zasób SolidColorBrush MyBrush służy do podawania wartości kilku właściwości, które każda Brush z nich przyjmują wartość typu. Zasoby Style PageBackgroundi TitleText Label każdy element docelowy określonego typu kontrolki. Style ustawiają różne właściwości kontrolek docelowych, gdy ten zasób stylu jest przywołytyny przez klucz zasobu i służy do ustawiania Style właściwości kilku określonych elementów kontrolki zdefiniowanych w języku XAML.

Należy pamiętać, że jedna z właściwości w elementach ustawiających Label stylu odwołuje się również do zasobu zdefiniowanego MyBrush 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ż żądane przez zamówienie znalezione w słowniku, jeśli używasz rozszerzenia StaticResource Markup do odwołowania 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 przy użyciu rozszerzenia DynamicResource Markup w celu odwołania się do zasobu w czasie wykonywania, ale należy pamiętać, że ta technika DynamicResource ma konsekwencje w zakresie wydajności. 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ż