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);
    }
  • 相关阅读:
    cloudstack secondary vm starting
    什么东西有机会
    ansible 远程以普通用户执行命令
    python 爬虫--同花顺-使用代理
    python3 Beautifulsoup <class 'bs4.element.ResultSet'> <class 'bs4.element.Tag'> 取值
    python3 raise HTTPError(req.full_url, code, msg, hdrs, fp) urllib.error.HTTPError: HTTP Error 403: Forbid
    kubernetes 生命周期问题分析
    'utf-8' codec can't decode byte 0xbc in position 1182: invalid start byte
    找回Firefox4的状态栏!Status-4-Evar扩展
    生命周期和Zend引擎
  • 原文地址:https://www.cnblogs.com/robertyao/p/14858761.html
Copyright © 2011-2022 走看看