Aar*_*ell 2 .net wpf animation storyboard
我正在编写我的第一个 WPF 应用程序,并尝试在窗体关闭时实现淡入淡出动画。我遇到了这个问题Fading out a wpf window on close,它显示了如何制作淡出动画,但我似乎无法让它工作。我的 XAML 中有这个:
<Window.Resources>
<Storyboard Name="FadeOutStoryboard" x:Key="FadeOutStoryboard" Completed="FadeOutStoryboard_Completed">
<DoubleAnimation Storyboard.TargetProperty="Window.Opacity" From="1" To="0" Duration="0:0:2" FillBehavior="HoldEnd" />
</Storyboard>
</Window.Resources>
Run Code Online (Sandbox Code Playgroud)
然后我有这个事件处理程序:
private bool doneFade;
private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
if (!doneFade)
{
e.Cancel = true;
Storyboard sb = (Storyboard)this.FindResource("FadeOutStoryboard");
sb.Begin();
}
}
Run Code Online (Sandbox Code Playgroud)
但是当sb.Begin()调用该方法时,我得到这个异常:
System.InvalidOperationException: No target was specified for 'System.Windows.Media.Animation.DoubleAnimation'.
Run Code Online (Sandbox Code Playgroud)
如前所述,这是我第一次尝试 WPF,因此我对在表单关闭时需要做什么来添加淡出感到相当困惑。
您需要将目标 UI 元素添加到 StoryBoard 动画中,否则无法应用动画。
<Storyboard Name="FadeOutStoryboard" x:Key="FadeOutStoryboard" Completed="FadeOutStoryboard_Completed">
<DoubleAnimation Storyboard.TargetName="myWindow" Storyboard.TargetProperty="Window.Opacity" From="1" To="0" Duration="0:0:2" FillBehavior="HoldEnd" />
</Storyboard>
Run Code Online (Sandbox Code Playgroud)