Sdílet prostřednictvím


Postupy: Definování a odkaz na prostředek

Tento příklad ukazuje, jak definovat prostředek a odkazovat na něj pomocí atributu v jazyku XAML (Extensible Application Markup Language).

Příklad

Následující příklad definuje dva typy prostředků: SolidColorBrush prostředek a několik Style prostředků. SolidColorBrush prostředek MyBrush slouží k poskytnutí hodnoty pro několik vlastností, z nichž každá přijímá hodnotu typu Brush. Prostředky Style, PageBackground, TitleText a Label jsou každý z nich zaměřeny na konkrétní typ ovládacího prvku. Styly nastavují různé vlastnosti cílových ovládacích prvků, když je na tento stylový prostředek odkazováno pomocí klíče prostředku a používá se k nastavení vlastnosti Style několika konkrétních ovládacích prvků definovaných v XAML.

Všimněte si, že jedna z vlastností v setrech stylu Label také odkazuje na prostředek MyBrush definovaný dříve. Jedná se o běžnou techniku, ale je důležité si uvědomit, že se prostředky analyzují a zadávají do slovníku prostředků v pořadí, v jakém jsou uvedeny. Prostředky jsou také získávány v pořadí, v jakém jsou nalezeny ve slovníku, pokud použijete StaticResource Markup Extension pro odkazování na ně z jiného prostředku. Ujistěte se, že všechny prostředky, na které odkazujete, jsou definovány dříve v kolekci prostředků, než kde se tento prostředek potom požaduje. V případě potřeby můžete obejít striktní pořadí vytváření prostředků pomocí rozšíření DynamicResource Markup Extension, abyste odkazovali na prostředek za běhu, je však třeba mít na paměti, že tato technika DynamicResource má výkonnostní dopady. Podrobnosti naleznete v sekci prostředky 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>

Viz také