【发布时间】:2015-05-28 19:32:42
【问题描述】:
简单的问题,真的。我用一些简单的绑定和样式触发器定义了以下按钮:
<Button HorizontalAlignment="Stretch" VerticalAlignment="Stretch" BorderBrush="Transparent" BorderThickness="0" Command="{Binding AcceptValueInputCommand}">
<Button.Style>
<Style TargetType="{x:Type Button}">
<Style.Triggers>
<DataTrigger Binding="{Binding ValueInputEnabled}" Value="True">
<Setter Property="Visibility" Value="Collapsed" />
</DataTrigger>
<DataTrigger Binding="{Binding IsPredefined}" Value="True">
<Setter Property="Background" Value="Red" />
<Setter Property="Foreground" Value="Black" />
</DataTrigger>
</Style.Triggers>
<Setter Property="Visibility" Value="Visible"/>
<Setter Property="Background" Value="White" />
<Setter Property="Foreground" Value="Black" />
</Style>
</Button.Style>
<Viewbox>
<TextBlock Text="{Binding Value}" />
</Viewbox>
</Button>
我遇到的问题是我在“IsPredefined”上的触发器没有将按钮的背景设置为红色。前景 确实 被正确设置为黑色(尽管我不知道为什么它没有从样式之外的设置器中拾取它)。我认为问题与按钮上的命令绑定有关,因为如果我将绑定注释掉,按钮突然变红了! (注意,在“IsPredefined”评估为真的所有情况下,命令的 CanExecute() 应该评估为假)。有什么想法吗?
(编辑为在 IsPredefined 触发器中添加黑色前景)。
【问题讨论】:
-
尝试将按钮的 OveridesDefaultStyle 属性设置为 true。
-
@mgarant 刚试过,然后我所有按钮的内容都消失了。仅供参考,我只是将前景的设置器放在与背景相同的触发器中,然后 that 被设置...