代码之家  ›  专栏  ›  技术社区  ›  Aaron Powell

WPF故事板初学者问题

  •  1
  • Aaron Powell  · 技术社区  · 15 年前

    我正在编写我的第一个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>
    

    然后我有了这个事件处理程序:

        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();
            }
        }
    

    但是当 sb.Begin() 方法被调用我得到这个异常:

    System.InvalidOperationException: No target was specified for 'System.Windows.Media.Animation.DoubleAnimation'.
    

    如前所述,这是我在WPF中的第一次尝试,所以当表单关闭时,我需要做些什么来添加淡出。

    1 回复  |  直到 13 年前
        1
  •  4
  •   sipsorcery    15 年前

    您需要将一个目标UI元素添加到故事板动画中,否则它将没有任何要应用动画的内容。

    <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>