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);
    }
  • 相关阅读:
    ZooKeeper Java例子(六)
    css盒模型
    竖直方向三栏布局
    水平方向三栏布局
    js判断一个字符串是以某个字符串开头
    js防止重复点击
    升级 AngularJS 至 Angular
    js实现大文件分片上传的方法
    使用svn进行本地代码管理
    angular使用代理解决跨域
  • 原文地址:https://www.cnblogs.com/robertyao/p/14858761.html
Copyright © 2011-2022 走看看