我想组合一些切换按钮,让它们表现为单选按钮.所以我做的是为我的xaml添加单选按钮并创建以下样式:
<Style BasedOn="{StaticResource {x:Type ToggleButton}}" TargetType="RadioButton">
<Setter Property="FontFamily" Value="Arial"/>
<Setter Property="FontSize" Value="12"/>
<Setter Property="Foreground" Value="White"/>
<Style.Triggers>
<Trigger Property="IsChecked" Value="True">
<Setter Property="Background" Value="Red"/>
</Trigger>
</Style.Triggers>
</Style>
Run Code Online (Sandbox Code Playgroud)
现在单选按钮看起来像切换按钮,并且应用了样式的字体和前景属性,但是如果我单击其中一个切换按钮,则背景不会更改为红色.如果我基于IsChecked更改前景,它可以工作,但是当IsChecked为真时我无法更改背景.
有任何想法吗?
更新:
似乎默认的ToggleButton样式不使用Background属性.我现在使用以下代码来解决我的问题.如果有人发现以下内容有任何问题,请告诉我.
<DataTemplate x:Key="RedBackground">
<Grid Background="Red">
<TextBlock HorizontalAlignment="Center" VerticalAlignment="Center" TextAlignment="Center" Text="{Binding}"/>
</Grid>
</DataTemplate>
<Style TargetType="ToggleButton">
<Style.Triggers>
<Trigger Property="IsChecked" Value="True">
<Setter Property="HorizontalContentAlignment" Value="Stretch"/>
<Setter Property="VerticalContentAlignment" Value="Stretch"/>
<Setter Property="ContentTemplate" Value="{StaticResource RedBackground}"/>
</Trigger>
</Style.Triggers>
</Style>
Run Code Online (Sandbox Code Playgroud)
Background
除非“由用户”设置,否则您所基于的样式是否完全使用该属性?也就是说,您是否可以使用到目前为止切换按钮的样式并明确将背景设置为红色以获得所需的效果?
样式中的触发器看起来不错,但某些样式会忽略主题渲染等属性,因此在触发器中设置这些属性不会执行任何操作。
另一个可能的原因是依赖属性值优先级的概念- 当“本地”设置值时,该值会覆盖样式中给定的值(即使通过触发器设置)。因此,如果您的<RadioButton>
标签设置了背景,则触发器将不会执行任何操作。
归档时间: |
|
查看次数: |
6241 次 |
最近记录: |