如何将StackPanel的背景设置为样式资源中定义的ImageBrush?

时间:2015-04-03 03:48:24

标签: c# wpf xaml

我可以使用此XAML代码将背景图像应用于StackPanel:

<StackPanel>
  <StackPanel.Background>
    <ImageBrush ImageSource="bg.png" Stretch="Uniform" AlignmentY="Bottom" />
  </StackPanel.Background>
  ...
</StackPanel>

但是当应用于多个StackPanel时,要输入的内容很多。所以我宁愿定义一个Style(又名静态资源?),我可以快速应用到各个StackPanels。

所以我开始写这个:

<Window.Resources>
  <ImageBrush x:Key="SpBg" ImageSource="bg.png" Stretch="Uniform" AlignmentY="Bottom" />
  <Style x:Key="StackPanelBg" TargetType="StackPanel">
    <!-- begin invalid xaml -->
    <Setter Property="Background" Value="SpBg" />
    <!-- end invalid xaml -->
  </Style>
</Window.Resources>

这样我才能做到这一点:

<StackPanel Style="{StaticResource StackPanelBg}">
  ...
</StackPanel>

除非不起作用; Setter行不正确。我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:1)

就像那样:

<Window x:Class="WpfApplication12.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
    <Window.Resources>

        <ImageBrush x:Key="SpBg" ImageSource="bg.png" Stretch="Uniform" AlignmentY="Bottom" />

        <Style x:Key="StackPanelBg" TargetType="StackPanel">
            <Setter Property="Background" Value="{StaticResource SpBg}" />
        </Style>

    </Window.Resources>

    <StackPanel Style="{StaticResource StackPanelBg}">

    </StackPanel>
</Window>