• 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);
    }
  • 相关阅读:
    微软BI 之SSAS 系列
    微软BI 之SSIS 系列
    微软BI 之SSAS 系列
    微软BI 之SSAS 系列
    微软BI 之SSIS 系列
    微软BI 之SSRS 系列
    微软BI 之SSAS 系列
    微软BI 之SSAS 系列
    微软BI 之SSAS 系列
    微软BI 之SSRS 系列
  • 原文地址:https://www.cnblogs.com/robertyao/p/14858761.html
Copyright © 2020-2023  润新知