문제

첫 번째 WPF 애플리케이션을 작성 중이며 양식이 닫힐 때 페이드 애니메이션을 구현하려고 합니다.나는이 질문을 발견했습니다 닫을 때 WPF 창 페이드 아웃 페이드 아웃 애니메이션을 만드는 방법을 보여 주지만 제대로 작동하지 않는 것 같습니다.내 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에 대한 첫 번째 시도이므로 양식이 닫힐 때 페이드 아웃을 추가하기 위해 무엇을 해야 할지 다소 혼란스럽습니다.

도움이 되었습니까?

해결책

StoryBoard 애니메이션에 대상 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>
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top