Frage

Ich versuche, den Hintergrund einer Grenze am linken Mausbutton nach unten zu ändern. Knopf Ich verstehe es nicht. Natürlich hat mein Gradient 3 Stopps.

EventTRigger:

<EventTrigger  RoutedEvent="UIElement.PreviewMouseLeftButtonDown" SourceName="border">
    <BeginStoryboard x:Name="MouseDown_BeginStoryboard" Storyboard="{StaticResource OnMouseDown}"/>
</EventTrigger>

Storyboard:

<Storyboard x:Key="OnMouseDown">
    <ColorAnimation Duration="0:0:0.15" Storyboard.TargetName="border" Storyboard.TargetProperty="Background.GradientStops[0].Color" To="Red" />
    <ColorAnimation Duration="0:0:0.15" Storyboard.TargetName="border" Storyboard.TargetProperty="Background.GradientStops[1].Color" To="Red" />
    <ColorAnimation Duration="0:0:0.15" Storyboard.TargetName="border" Storyboard.TargetProperty="Background.GradientStops[2].Color" To="Red" />
</Storyboard>

Wenn jemand den Fehler sieht, sagen Sie es mir bitte;)

War es hilfreich?

Lösung

Ich sehe keine offensichtlichen Fehler und das Beispielprojekt, das ich mit dem von Ihnen veröffentlichten Code erstellt habe, funktioniert gut. Vielleicht können Sie es verwenden, um die Quelle Ihres Problems zu finden

<Window.Resources>
    <Storyboard x:Key="OnMouseDown">
        <ColorAnimation Duration="0:0:0.15"
                        Storyboard.TargetName="border"
                        Storyboard.TargetProperty="Background.GradientStops[0].Color"
                        To="Red" />
        <ColorAnimation Duration="0:0:0.15"
                        Storyboard.TargetName="border"
                        Storyboard.TargetProperty="Background.GradientStops[1].Color"
                        To="Red" />
        <ColorAnimation Duration="0:0:0.15"
                        Storyboard.TargetName="border"
                        Storyboard.TargetProperty="Background.GradientStops[2].Color"
                        To="Red" />
    </Storyboard>
</Window.Resources>
<Grid>
    <Border Name="border">
        <Border.Background>
            <LinearGradientBrush>
                <GradientStop Color="Red" Offset="0"/>
                <GradientStop Color="Green" Offset="0.5"/>
                <GradientStop Color="Blue" Offset="1.0"/>
            </LinearGradientBrush>
        </Border.Background>
        <Border.Triggers>
            <EventTrigger RoutedEvent="PreviewMouseLeftButtonDown"
                          SourceName="border">
                <BeginStoryboard x:Name="MouseDown_BeginStoryboard"
                                 Storyboard="{StaticResource OnMouseDown}"/>
            </EventTrigger>
        </Border.Triggers>
    </Border>
</Grid>

Aktualisieren

Ich habe versucht, auch ein Mouseleave -Event hinzuzufügen und es funktioniert immer noch.

Update 2

Mausenter hinzugefügt

<Window.Resources>
    <Storyboard x:Key="OnMouseDown">
        <ColorAnimation Duration="0:0:0.15"
                        Storyboard.TargetName="border"
                        Storyboard.TargetProperty="Background.GradientStops[0].Color"
                        To="Red" />
        <ColorAnimation Duration="0:0:0.15"
                        Storyboard.TargetName="border"
                        Storyboard.TargetProperty="Background.GradientStops[1].Color"
                        To="Red" />
        <ColorAnimation Duration="0:0:0.15"
                        Storyboard.TargetName="border"
                        Storyboard.TargetProperty="Background.GradientStops[2].Color"
                        To="Red" />
    </Storyboard>
    <Storyboard x:Key="OnMouseLeave">
        <ColorAnimation Duration="0:0:0.15"
                        Storyboard.TargetName="border"
                        Storyboard.TargetProperty="Background.GradientStops[0].Color"
                        To="Blue" />
        <ColorAnimation Duration="0:0:0.15"
                        Storyboard.TargetName="border"
                        Storyboard.TargetProperty="Background.GradientStops[1].Color"
                        To="Blue" />
        <ColorAnimation Duration="0:0:0.15"
                        Storyboard.TargetName="border"
                        Storyboard.TargetProperty="Background.GradientStops[2].Color"
                        To="Blue" />
    </Storyboard>
    <Storyboard x:Key="OnMouseEnter">
        <ColorAnimation Duration="0:0:0.15"
                        Storyboard.TargetName="border"
                        Storyboard.TargetProperty="Background.GradientStops[0].Color"
                        To="Green" />
        <ColorAnimation Duration="0:0:0.15"
                        Storyboard.TargetName="border"
                        Storyboard.TargetProperty="Background.GradientStops[1].Color"
                        To="Green" />
        <ColorAnimation Duration="0:0:0.15"
                        Storyboard.TargetName="border"
                        Storyboard.TargetProperty="Background.GradientStops[2].Color"
                        To="Green" />
    </Storyboard>
</Window.Resources>
<Grid>
    <Border Name="border">
        <Border.Background>
            <LinearGradientBrush>
                <GradientStop Color="Red" Offset="0"/>
                <GradientStop Color="Green" Offset="0.5"/>
                <GradientStop Color="Blue" Offset="1.0"/>
            </LinearGradientBrush>
        </Border.Background>
        <Border.Triggers>
            <EventTrigger RoutedEvent="PreviewMouseLeftButtonDown" SourceName="border">
                <BeginStoryboard x:Name="MouseDown_BeginStoryboard" Storyboard="{StaticResource OnMouseDown}"/>
            </EventTrigger>
            <EventTrigger RoutedEvent="MouseLeave" SourceName="border">
                <BeginStoryboard x:Name="MouseLeave_BeginStoryboard" Storyboard="{StaticResource OnMouseLeave}"/>
            </EventTrigger>
            <EventTrigger RoutedEvent="MouseEnter" SourceName="border">
                <BeginStoryboard x:Name="MouseEnter_BeginStoryboard" Storyboard="{StaticResource OnMouseEnter}"/>
            </EventTrigger>
        </Border.Triggers>
    </Border>
</Grid>
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top