如何在WPF Window.Resources中设置样式。

时间:2012-02-08 23:26:56

标签: wpf xaml resources window styles

我想在Window.Resources中创建多个样式。下面是我尝试的代码,但它不起作用:

<Window.Resources>
    <Style x:Key="StyleOne" TargetType="{x:Type Control}">
        <Setter Property="Control.Background" Value="Blue"></Setter>
        <Setter Property="Control.Height" Value="20"></Setter>
    </Style>
    <Style x:Key="StyleTwo" BasedOn="{StaticResource StyleOne}">
        <Setter Property="Control.Background" Value="Red"></Setter>
        <Setter Property="Control.Height" Value="20"></Setter>
    </Style>
</Window.Resources>
<Button Style="{StaticResource StyleOne}"></Button>
<Button Style="{StaticResource StyleTwo}"></Button>

它抛出错误说:

  

属性“内容”设置不止一次。

3 个答案:

答案 0 :(得分:6)

此错误与样式无关,窗口只能包含一个子项(设置Content),使用一些容器可以包含多个子项。例如StackPanelGrid

<StackPanel>
     <Button .../>
     <Button .../>
</StackPanel>

(另见:Panels Overview

答案 1 :(得分:4)

设置第二个样式的目标类型

 <Style x:Key="StyleTwo"
           BasedOn="{StaticResource StyleOne}"
           TargetType="{x:Type Control}">
        <Setter Property="Control.Background"
                Value="Red"></Setter>
        <Setter Property="Control.Height"
                Value="20"></Setter>
    </Style>

将按钮放在stackpanel或Grid

答案 2 :(得分:-2)

我猜基于OnOn继承了其他样式类型的属性,你有

    Property="Control.Background"

设置两种样式,因此出现错误

    "The property "Content" is set more than once."