我在Styles.xaml
文件中有以下样式:
<Style x:Key="MainViewButton" TargetType="Button">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<SymbolIcon Symbol="{TemplateBinding Content}" Foreground="#FFF7F7F7" />
</ControlTemplate>
</Setter.Value>
</Setter>
<Setter Property="Background" Value="#FF55677F"/>
<Setter Property="HorizontalAlignment" Value="Stretch"/>
<Setter Property="VerticalAlignment" Value="Center"/>
<Setter Property="Height" Value="40"/>
</Style>
当我启动项目时,会应用模板,因为按钮包含他们的Content
SymbolIcon,但即使在模板后面的样式中指定了它们,它们也没有任何背景颜色。它们只是透明的。怎么样?
答案 0 :(得分:1)
您的控件模板会覆盖您设置的任何样式。如果您的ControlTemplate
不尊重样式,则不会得到任何设置。
您可以将背景设置器和其他设置器置于模板设置器上方,然后使用TemplateBinding
设置SymbolIcon
内的属性。如果您的SymbolIcon没有任何背景属性,唉,您无法做到。
但是,您可以使用Border并将SymbolIconIn放入其中。我就是这样做的:
<Style x:Key="MainViewButton" TargetType="Button">
<Setter Property="Background" Value="#FF55677F"/>
<Setter Property="HorizontalAlignment" Value="Stretch"/>
<Setter Property="VerticalAlignment" Value="Center"/>
<Setter Property="Height" Value="40"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<Border Background="{TemplateBinding Background}" Height="{TemplateBinding Height}">
<SymbolIcon Symbol="{TemplateBinding Content}" Foreground="#FFF7F7F7" />
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>