WPF Storyboard problema principiante
-
05-09-2019 - |
Domanda
sto scrivendo la mia prima applicazione WPF e sto cercando di implementare un'animazione dissolvenza quando la forma si chiude. Mi sono imbattuto in questa domanda dissolvenza da una finestra WPF su una stretta cui spettacoli come fare un'animazione fade-out, ma non riesco a farlo funzionare. Ho questo nel mio 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>
E io allora ho questo gestore di eventi:
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();
}
}
Ma quando il metodo viene chiamato sb.Begin()
ottengo questa eccezione:
System.InvalidOperationException: No target was specified for 'System.Windows.Media.Animation.DoubleAnimation'.
Come già detto questo è il mio primo tentativo di WPF, quindi sono piuttosto comfused a quello che devo fare per aggiungere il fade-out quando la forma si sta chiudendo.
Soluzione
È necessario aggiungere un elemento dell'interfaccia utente di destinazione per l'animazione StoryBoard niente altrimenti è avuto modo di applicare l'animazione a.
<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>