zoukankan      html  css  js  c++  java
  • WPF 无边框窗口 显示及退出动画效果

     设置好无边框窗口后,对MainGrid Xaml代码进行修改:

    <Grid x:Name="MainGrid" RenderTransformOrigin="0.5,0.5">
    <Grid.RenderTransform>
    <TransformGroup>
    <ScaleTransform ScaleX="1" ScaleY="1"/>
    <SkewTransform/>
    <RotateTransform/>
    <TranslateTransform/>
    </TransformGroup>
    </Grid.RenderTransform>


    在Window.Resouse中添加故事板:

    <Window.Resources>
    <ResourceDictionary>
    <Storyboard x:Key="HideWindow">
    <DoubleAnimation Duration="0:0:0.3" From="1" To="0" Storyboard.TargetProperty="Opacity" FillBehavior="Stop" />
    <DoubleAnimation Duration="0:0:0.3" From="1" To="0.8" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleX)" FillBehavior="Stop" Storyboard.TargetName="MainGrid"/>
    <DoubleAnimation Duration="0:0:0.3" From="1" To="0.8" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleY)" FillBehavior="Stop" Storyboard.TargetName="MainGrid"/>
    </Storyboard>
    <Storyboard x:Key="ShowWindow" >
    <DoubleAnimation Duration="0:0:0.3" From="0" To="1" Storyboard.TargetProperty="Opacity" FillBehavior="Stop"/>
    <DoubleAnimation Duration="0:0:0.3" From="0.8" To="1" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleX)" FillBehavior="Stop" Storyboard.TargetName="MainGrid"/>
    <DoubleAnimation Duration="0:0:0.3" From="0.8" To="1" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleY)" FillBehavior="Stop" Storyboard.TargetName="MainGrid"/>
    </Storyboard>
    </ResourceDictionary>
    </Window.Resources>


    再添加窗口事件触发器:

    <Window.Triggers>
    <EventTrigger RoutedEvent="Loaded">
    <BeginStoryboard Storyboard="{StaticResource ShowWindow}"/>
    </EventTrigger>
    </Window.Triggers>


    这样窗口显示完成了,但退出并不能使用EventTrigger事件中的Closing或Closed,可以使用其他方法进行触发.

    这里我使用按钮来触发故事板,并关闭窗口:

    在ClientGrid内容里添加Xmal代码:

    <Button Click="CloseWindowButton_Click" Width="80" Height="24">关闭窗口</Button>
    CloseWindowButton_Click后台代码:

    private void CloseWindowButton_Click(object sender, RoutedEventArgs e)
    {
    var story = (Storyboard)this.Resources["HideWindow"];
    if (story != null)
    {
    story.Completed += delegate { Close(); };
    story.Begin(this);
    }
  • 相关阅读:
    二分和牛顿法实现开根号
    leetcode 44. 通配符匹配
    leetcode 91. 解码方法
    leetcode 236. 二叉树的最近公共祖先
    leetcode 39. 组合总数
    leetcode:146. LRU缓存机制
    leetcode:124. 二叉树中的最大路径和
    二叉树前序遍历,中序遍历,后序遍历以及层次遍历实现
    leetcode: 4. 寻找两个有序数组的中位数
    Leetcode: 43. 接雨水
  • 原文地址:https://www.cnblogs.com/robertyao/p/14858761.html
Copyright © 2011-2022 走看看