WPF - Storyboard Event Trigger

  • VB.NET

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von (Ger)Foley.

    WPF - Storyboard Event Trigger

    Eventuell gibts hier ja jemanden, der sich mit Storyboard, WPF und Event Triggern auskennt, denn ich habe ein Problem :P
    Ich habe den Code im XAML:

    XML-Quellcode

    1. <Window x:Class="MainWindow"
    2. xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    3. xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    4. Title="MainWindow" Height="350" Width="525">
    5. <Window.Resources>
    6. <Storyboard x:Key="stor1" x:Name="stor1" Completed="stor1n_Completed">
    7. <PointAnimation Storyboard.TargetName="lingrad" Storyboard.TargetProperty="EndPoint" To="1,0" AutoReverse="False" Duration="0:0:5.0" />
    8. </Storyboard>
    9. <Storyboard x:Key="stor2" x:Name="stor2" Completed="stor2n_Completed">
    10. <PointAnimation Storyboard.TargetName="lingrad" Storyboard.TargetProperty="EndPoint" To="0,1" AutoReverse="False" Duration="0:0:5.0" />
    11. </Storyboard>
    12. </Window.Resources>
    13. <Grid Name="grmain" Loaded="grmain_Loaded">
    14. <Grid.Background>
    15. <LinearGradientBrush StartPoint="0,0" EndPoint="1,1" x:Name="lingrad">
    16. <GradientStop Color="#000" Offset="0.0" />
    17. <GradientStop Color="#FFF" Offset="1.1" />
    18. </LinearGradientBrush>
    19. </Grid.Background>
    20. </Grid>
    21. </Window>

    und den im Code-Behind:

    VB.NET-Quellcode

    1. Imports System.Windows.Media.Animation
    2. Class MainWindow
    3. Private Sub stor1n_Completed(ByVal sender As System.Object, ByVal e As System.EventArgs)
    4. Dim story As Storyboard = Me.Resources.Item("stor2")
    5. story.Begin()
    6. End Sub
    7. Private Sub stor2n_Completed(ByVal sender As System.Object, ByVal e As System.EventArgs)
    8. Dim story As Storyboard = Me.Resources.Item("stor1")
    9. story.Begin()
    10. End Sub
    11. Private Sub grmain_Loaded(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs)
    12. Dim story As Storyboard = Me.Resources.Item("stor1")
    13. story.Begin()
    14. End Sub
    15. End Class

    Nun möchte ich die Animation auch ohne den Codebehind machen (also per EventTrigger), doch da faile ich bzw. bin zu blöd die Lösung zu finden.
    Wär cool wenn mir jemand helfen könnte.
    ich hab hier grade ein son ähnlichen

    XML-Quellcode

    1. <Window x:Class="ValidForMenuWindow"
    2. x:Name="Window" >
    3. <Window.Triggers>
    4. <EventTrigger RoutedEvent="FrameworkElement.Loaded" SourceName="Window">
    5. <BeginStoryboard x:Name="AniVFMenu" Storyboard="{StaticResource AniVFMenu}" />
    6. </EventTrigger>
    7. <!--
    8. -->
    9. </Window.Triggers>
    also das Window heißt Window, und in den Resourcen ist ein StoryBoard namens x:key = "AniVFMenu"
    Also soweit ich weiss ließ sich doch auch ein Storyboard Ereignissbasierend bauen ;)
    so dass man nur ein Board für verschiedene Animationen nehmen kann ...
    Hab das mal in VB.Net gemacht letztes Jahr wenn es Bedarf gibt dann posten da müsste ich nähmlich
    mein Buch wieder rauskrammen ...