Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
MainWindow animieren über XAML nicht möglich?
HiJack82
myCSharp.de - Member



Dabei seit:
Beiträge: 19

Themenstarter:

MainWindow animieren über XAML nicht möglich?

beantworten | zitieren | melden

Ich versuche das MainWindow meiner Anwendung über XAML zu animieren.
Konkret versuche ich das MainWindow bei MouseOver über XAML zu vergrößern und zu verschieben.

Auf der Suche nach Beispielen und Tutorials wurde ich leider nicht fündig. Alle Beispiele beziehen sich auf das Animieren von Elementen innerhalb des MainWindows.

Kann es sein, dass das MainWindow über XAML gar nicht selbst animiert werden kann?
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von HiJack82 am .
private Nachricht | Beiträge des Benutzers
pinki
myCSharp.de - Member

Avatar #avatar-4072.jpg


Dabei seit:
Beiträge: 709
Herkunft: OWL

beantworten | zitieren | melden

Doch, das geht.
    <Window.Style>
        <Style TargetType="{x:Type Window}">
            <Style.Triggers>
                <EventTrigger RoutedEvent="MouseEnter">
                    <BeginStoryboard>
                        <Storyboard>
                            <DoubleAnimation Storyboard.TargetProperty="Width" To="400" />
                            <DoubleAnimation Storyboard.TargetProperty="Height" To="400" />
                        </Storyboard>
                    </BeginStoryboard>
                </EventTrigger>

                <EventTrigger RoutedEvent="MouseLeave">
                    <BeginStoryboard>
                        <Storyboard>
                            <DoubleAnimation Storyboard.TargetProperty="Width" To="200" />
                            <DoubleAnimation Storyboard.TargetProperty="Height" To="200" />
                        </Storyboard>
                    </BeginStoryboard>
                </EventTrigger>
            </Style.Triggers>
        </Style>
    </Window.Style>
private Nachricht | Beiträge des Benutzers
HiJack82
myCSharp.de - Member



Dabei seit:
Beiträge: 19

Themenstarter:

beantworten | zitieren | melden

Super, danke!
Das hatte ich gesucht.

Leider verhält sich das bei mir ziemlich blöd.

Einmal schrumpft das Fenster bei MouseLeave in der Höhe zurück und manchmal bleibt es einfach in voller Höhe dargestellt. Manchmal wird es aber auch gar nicht ausgeklappt. Das Animieren der Width Eigenschaft passt eigentlich immer.

Wie kann es denn zu so einem nicht deterministischen Verhalten kommen?

Ich hätte die Realisierung einer einfachen Fensteranimation eher als Stärke von WPF gesehen. Das Verhalten ist für mich aber sehr "strage".

<Window x:Class="AppBar.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:AppBar"
        mc:Ignorable="d"
        Title="AppBar" Height="2" Width="1520" ResizeMode="NoResize" Topmost="True" AutomationProperties.Name="AppBar"
        WindowStyle="None" WindowStartupLocation="Manual" Left="200" Top="0">
       
    <Window.Style>
        <Style TargetType="{x:Type Window}">
            <Style.Triggers>
                <EventTrigger RoutedEvent="MouseEnter">
                    <BeginStoryboard>
                        <Storyboard>
                            <DoubleAnimation Storyboard.TargetProperty="Width" To="1920" />
                            <DoubleAnimation Storyboard.TargetProperty="Left" To="0"/>
                            <DoubleAnimation Storyboard.TargetProperty="Height" To="200" />
                        </Storyboard>
                    </BeginStoryboard>
                </EventTrigger>

                <EventTrigger RoutedEvent="MouseLeave">
                    <BeginStoryboard>
                        <Storyboard>
                            <DoubleAnimation Storyboard.TargetProperty="Width" To="1520" />
                            <DoubleAnimation Storyboard.TargetProperty="Left" To="200" />
                            <DoubleAnimation Storyboard.TargetProperty="Height" To="2" />
                        </Storyboard>
                    </BeginStoryboard>
                </EventTrigger>
            </Style.Triggers>
        </Style>
    </Window.Style>
    
    <Grid Background="{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}">

    </Grid>
</Window>

private Nachricht | Beiträge des Benutzers