0

トリガーが機能していません。IsMouseOver はボタンのスタイルを変更していません。コードの何が問題なのかわかりません。マウスオーバープロパティのボタンのスタイルプロパティを変更しようとしています。エラーをスローし続けます。

基本的に、マウスオーバーイベントで別のスタイルを使用しようとしています

 <Style x:Key="FancyButtonStyle" TargetType="{x:Type Button}">
                    <Setter Property="FontSize" Value="{Binding FontSize}"/>
                    <Setter Property="Foreground" Value="{Binding Foreground}"/>
                    <Setter Property="FontWeight" Value="{Binding FontWeight}"/>
                    <Setter Property="Width" Value="{Binding Width}"/>
                    <Setter Property="Height" Value="{Binding Height}"/>
                    <Setter Property="Background">
                        <Setter.Value>
                            <LinearGradientBrush StartPoint="0,0" EndPoint="0,1">
                                <GradientStop Offset="0.0" Color="White" />
                                <GradientStop Offset="0.2" Color="DarkGray" />
                                <GradientStop Offset="0.6" Color="Black" />
                            </LinearGradientBrush>
                        </Setter.Value>
                    </Setter>
                    <Style.Triggers>
                        <Trigger Property="IsMouseOver" Value="True">
                            <Setter Property="Style" Value="{StaticResource ResourceKey=FancyButtonInvertStyle}"/>
                         </Trigger>
                    </Style.Triggers>
                </Style>

                <Style x:Key="FancyButtonInvertStyle" TargetType="{x:Type Button}">
                    <Setter Property="FontSize" Value="{Binding FontSize}"/>
                    <Setter Property="Foreground" Value="{Binding Foreground}"/>
                    <Setter Property="FontWeight" Value="{Binding FontWeight}"/>
                    <Setter Property="Width" Value="{Binding Width}"/>
                    <Setter Property="Height" Value="{Binding Height}"/>
                    <Setter Property="Background">
                        <Setter.Value>
                            <LinearGradientBrush StartPoint="0,0" EndPoint="0,1">
                                <GradientStop Offset="0.0" Color="Black" />
                                <GradientStop Offset="0.4" Color="DarkGray" />
                                <GradientStop Offset="0.6" Color="White" />
                            </LinearGradientBrush>
                        </Setter.Value>
                    </Setter>
                </Style>
4

1 に答える 1

0

の を変更しようとする代わりにStyle、のを直接Trigger変更します。完全にやり直すBackgroundことも防ぎます。Style

<Style x:Key="FancyButtonStyle" TargetType="{x:Type Button}">
    <Setter Property="FontSize" Value="{Binding FontSize}"/>
    <Setter Property="Foreground" Value="{Binding Foreground}"/>
    <Setter Property="FontWeight" Value="{Binding FontWeight}"/>
    <Setter Property="Width" Value="{Binding Width}"/>
    <Setter Property="Height" Value="{Binding Height}"/>
    <Setter Property="Background">
        <Setter.Value>
            <LinearGradientBrush StartPoint="0,0" EndPoint="0,1">
                <GradientStop Offset="0.0" Color="White" />
                <GradientStop Offset="0.2" Color="DarkGray" />
                <GradientStop Offset="0.6" Color="Black" />
            </LinearGradientBrush>
        </Setter.Value>
    </Setter>
    <Style.Triggers>
        <Trigger Property="IsMouseOver" Value="True">
            <Setter Property="Background">
            <Setter.Value>
                <LinearGradientBrush StartPoint="0,0" EndPoint="0,1">
                    <GradientStop Offset="0.0" Color="Black" />
                    <GradientStop Offset="0.4" Color="DarkGray" />
                    <GradientStop Offset="0.6" Color="White" />
                </LinearGradientBrush>
            </Setter.Value>
            </Setter>
         </Trigger>
    </Style.Triggers>
</Style>

ターゲットコントロール自体のタグを介して設定されていないため、目的の方法Styleでそれ自体を変更できるかどうかもわかりません。TriggerSetter

于 2015-07-06T18:03:48.800 に答える