【发布时间】:2011-10-09 20:02:13
【问题描述】:
我有 2 种样式的按钮。第一个用于正常状态,第二个用于 mouseOver 状态。鼠标进入时如何更改按钮样式?在 Blend 中,我尝试创建故事板并更改样式,但没有任何反应。
【问题讨论】:
我有 2 种样式的按钮。第一个用于正常状态,第二个用于 mouseOver 状态。鼠标进入时如何更改按钮样式?在 Blend 中,我尝试创建故事板并更改样式,但没有任何反应。
【问题讨论】:
您可以将Style 属性绑定到IsMouseOver 并使用通用的“真值”/“假值”转换器。
你可以像这样指定转换器
<Window.Resources>
<Style TargetType="Button" x:Key="normalStyle">
<Setter Property="Foreground" Value="Green"/>
</Style>
<Style TargetType="Button" x:Key="mouseOverStyle">
<Setter Property="Foreground" Value="Red"/>
</Style>
<converters:BooleanObjectConverter FalseValue="{StaticResource normalStyle}"
TrueValue="{StaticResource mouseOverStyle}"
x:Key="styleConverter"/>
</Window.Resources>
然后将Style绑定到IsMouseOver
<Button Style="{Binding RelativeSource={RelativeSource Self},
Path=IsMouseOver,
Converter={StaticResource styleConverter}}"
... />
BooleanObjectConverter
public class BooleanObjectConverter : IValueConverter
{
public object TrueValue { get; set; }
public object FalseValue { get; set; }
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if ((bool)value == true)
{
return TrueValue;
}
return FalseValue;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotSupportedException();
}
}
【讨论】: