【发布时间】:2010-09-17 15:33:52
【问题描述】:
我想将多个切换按钮组合在一起,并让它们充当单选按钮。所以我所做的就是在我的 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>
现在单选按钮看起来像切换按钮,并且应用了样式的字体和前景属性,但是如果我单击其中一个切换按钮,背景不会变为红色。如果我根据 IsChecked 更改前景,它可以工作,但是当 IsChecked 为 true 时,我无法更改背景。
有什么想法吗?
更新:
似乎默认的 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>
【问题讨论】:
-
如果您在
RadioButton上明确将Background设置为Red,它真的有效吗? -
是的。在单选按钮上设置 Background="Red" 会显示一个带有红色背景的切换按钮。
标签: wpf wpf-controls