我想在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>
它抛出错误说:
属性“内容”设置不止一次。
答案 0 :(得分:6)
此错误与样式无关,窗口只能包含一个子项(设置Content
),使用一些容器可以包含多个子项。例如StackPanel
或Grid
。
<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."