c# - 关闭时淡出 wpf 窗口

标签 c# wpf animation eventtrigger routedevent

我想在我的应用程序中淡入/淡出一个窗口。
淡入发生在 Window.Loaded 上,我想在关闭时淡出(Window.ClosedWindow.Closing)。 淡入效果完美,但 Window.Closing 不是 RoutedEvent 属性的允许值。
我应该使用什么 RoutedEvent 来关闭?

    <Window.Triggers>
        <EventTrigger RoutedEvent="Window.Loaded">
            <BeginStoryboard>
                <Storyboard>
                    <DoubleAnimation Storyboard.TargetProperty="Opacity" From="0" To="1" Duration="0:0:2" FillBehavior="HoldEnd" />
                </Storyboard>
            </BeginStoryboard>
        </EventTrigger>
        <EventTrigger RoutedEvent="Window.Closing">
            <BeginStoryboard>
                <Storyboard>
                    <DoubleAnimation Storyboard.TargetProperty="Opacity" From="1" To="0" Duration="0:0:2" FillBehavior="HoldEnd" />
                </Storyboard>
            </BeginStoryboard>
        </EventTrigger>
    </Window.Triggers>

我在 上收到错误消息,无法将值“Window.Closing”分配给属性“RoutedEvent”。无效的事件名称。

最佳答案

关闭不是路由事件,因此您不能在 EventTrigger 中使用它。也许您可以在代码隐藏的 ClosingEvent 处理程序中启动 Storyboard 并取消事件……类似这样的事情:

private bool closeStoryBoardCompleted = false;

private void Window_Closing(object sender, CancelEventArgs e)
{
    if (!closeStoryBoardCompleted)
    {
        closeStoryBoard.Begin();
        e.Cancel = true;
    }
}

private void closeStoryBoard_Completed(object sender, EventArgs e)
{
    closeStoryBoardCompleted = true;
    this.Close();
}

关于c# - 关闭时淡出 wpf 窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/867656/

相关文章:

javascript - 标签式菜单动画

c# - SQL : Update a row and returning a column value with 1 query

Android,使动画文本在屏幕上向上滚动,就像星球大战的第一部分

C# WPF 应用程序在由使用 topshelf 创建的 Windows 服务启动时不显示表单

c# - 上下文菜单绑定(bind)永远不会被执行

WPF:使用旋转方 block 进行碰撞检测

C# WPF 无法从 UserControl 访问 ControlTemplate 中定义的按钮

JQuery 动画滞后

c# - SQL Server备份与恢复

c# - 无法在 JQuery 中获取/绑定(bind)正确的实体 ID,始终从迭代中获取第一个项目 ID