WPF 스토리보드 초보자 문제
-
05-09-2019 - |
문제
첫 번째 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>
제휴하지 않습니다 StackOverflow