gpt4 book ai didi

c# - 淡出一个窗口

转载 作者:IT王子 更新时间:2023-10-29 04:41:19 26 4
gpt4 key购买 nike

我目前正在开发一个 wpf c# 应用程序。我已经将事件触发器添加到窗体的 xaml 中,以便在窗口加载时淡入,在窗口关闭时淡出。

淡入效果完美,没有任何问题,但淡出效果不佳。

我已将其设置为窗口在加载时淡入,有一个持续 5 秒的计时器,然后调用表单淡出事件。

但是,窗口不会淡出,它只是立即关闭,没有动画。下面是淡入和淡出事件的代码

<Window.Triggers>
<EventTrigger RoutedEvent="Window.Loaded">
<BeginStoryboard>
<Storyboard Name="FormFade">
<DoubleAnimation Name="FormFadeAnimation"
Storyboard.TargetProperty="(Window.Opacity)"
From="0.0" To="1.0" Duration="0:0:1"
AutoReverse="False" RepeatBehavior="1x" />
</Storyboard>
</BeginStoryboard>
</EventTrigger>
<EventTrigger RoutedEvent="Window.Unloaded">
<BeginStoryboard>
<Storyboard Name="FormFadeOut" Completed="FormFadeOut_Completed">
<DoubleAnimation Name="FormFadeOutAnimation"
Storyboard.TargetName="FormFadeOut"
Storyboard.TargetProperty="(Window.Opacity)"
From="1.0" To="0.0" Duration="0:0:1"
AutoReverse="False" RepeatBehavior="1x" />
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</Window.Triggers>

感谢您提供的任何帮助。

最佳答案

Unloaded这不是一个合适的事件,我不确定这个事件是否甚至可以发生在 Windows 上。您需要处理 Closing,防止它实际关闭,启动动画并在动画的 Completed 事件发生时关闭它。

例如

<Window ...
Closing="Window_Closing">
private void Window_Closing(object sender, CancelEventArgs e)
{
Closing -= Window_Closing;
e.Cancel = true;
var anim = new DoubleAnimation(0, (Duration)TimeSpan.FromSeconds(1));
anim.Completed += (s, _) => this.Close();
this.BeginAnimation(UIElement.OpacityProperty, anim);
}

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

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com