Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wpf 在鼠标上方更改样式_Wpf_Xaml_Styles_Blend - Fatal编程技术网

Wpf 在鼠标上方更改样式

Wpf 在鼠标上方更改样式,wpf,xaml,styles,blend,Wpf,Xaml,Styles,Blend,我有两种按钮样式。第一个用于正常状态,第二个用于鼠标悬停状态。当鼠标进入时,如何更改按钮样式?在Blend中,我试图创建一个故事板并更改样式,但什么也没发生。您可以将样式属性绑定到IsMouseOver并使用通用的“真值”/“假值”转换器 您可以这样指定转换器 <Window.Resources> <Style TargetType="Button" x:Key="normalStyle"> <Setter Property="Foregro

我有两种按钮样式。第一个用于正常状态,第二个用于鼠标悬停状态。当鼠标进入时,如何更改按钮样式?在Blend中,我试图创建一个故事板并更改样式,但什么也没发生。

您可以将
样式
属性绑定到
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>
布尔对象转换器

<Button Style="{Binding RelativeSource={RelativeSource Self},
                        Path=IsMouseOver,
                        Converter={StaticResource styleConverter}}" 
        ... />
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();
    }
}