【问题标题】:Change style on mouseOver在 mouseOver 上更改样式
【发布时间】:2011-10-09 20:02:13
【问题描述】:

我有 2 种样式的按钮。第一个用于正常状态,第二个用于 mouseOver 状态。鼠标进入时如何更改按钮样式?在 Blend 中,我尝试创建故事板并更改样式,但没有任何反应。

【问题讨论】:

    标签: wpf xaml styles blend


    【解决方案1】:

    您可以将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();
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-01-24
      • 1970-01-01
      • 2011-09-04
      • 2014-10-19
      • 2015-10-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多