我想在我的应用程序中淡入/淡出一个窗口。
淡入发生在 Window.Loaded
上,我想在关闭时淡出(Window.Closed
或 Window.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/