在关闭时淡出 wpf 窗口 [英] Fading out a wpf window on close
问题描述
我想在我的应用程序中淡入/淡出一个窗口.
淡入发生在 Window.Loaded
上,我想在关闭时淡出(Window.Closed
或 Window.Closing
).淡入效果完美,但 Window.Closing
不是 RoutedEvent
属性的允许值.
我应该使用什么 RoutedEvent
来关闭?
I want to fade a window in/out in my application.
Fading in occurs on Window.Loaded
and I wanted to fade out on close (Window.Closed
or Window.Closing
).
Fading in works perfectly, but Window.Closing
is not allowed value for RoutedEvent
property.
What RoutedEvent
should I be using for Close?
<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".事件名称无效.
I get a error on , Value 'Window.Closing' cannot be assigned to property 'RoutedEvent'. Invalid event name.
推荐答案
Closing 不是路由事件,因此您不能在 EventTrigger 中使用它.也许您可以在代码隐藏中的 ClosingEvent 的处理程序中启动故事板并取消事件......类似这样:
Closing is not a routed event, so you can't use it in an EventTrigger. Perhaps you could start the storyboard in the handler of the ClosingEvent in the code-behind and cancel the event... something like that :
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();
}
这篇关于在关闭时淡出 wpf 窗口的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!