2010-02-18 4 views
7

Beh io ho un controllo personalizzato e quando Visibility viene modificato in Visible ho un Trigger con un entrare/azione di uscita, ma il problema è che quando l'azione di uscita spara il Visibility non è più Visible così l'animazione non può essere visto come dovrei risolvere questo?Animazione del trigger WPF quando viene modificata la visibilità?

qui è la mia Trigger:

<ControlTemplate.Triggers> 
    <Trigger Property="Visibility" Value="Visible"> 
     <Trigger.ExitActions> 
      <BeginStoryboard Storyboard="{StaticResource Hide}"/> 
     </Trigger.ExitActions> 
     <Trigger.EnterActions> 
      <BeginStoryboard Storyboard="{StaticResource Show}"/> 
     </Trigger.EnterActions> 
    </Trigger> 
</ControlTemplate.Triggers> 
+0

Proprio così. Roba ingannevole. Risolverei questo problema con le proprietà associate + la coercizione del valore. Dai un'occhiata qui: [WPF Fade Animation] (http://stackoverflow.com/questions/1013817/wpf-fade-animation/1015635#1015635). Spero che questo ti aiuti. Saluti, Anvaka. – Anvaka

+0

Questo ha un'animazione dissolvenza in esso? posso modificare questo in modo che ritardi solo la nascondi/collassi fino a quando l'animazione non viene completata? – Peter

+0

Mi sto chiedendo la stessa cosa di Petoj. – jpierson

risposta

3

Ho provato anche questo e non è riuscito. Penso che non sia possibile farlo in un semplice ControlTemplate con un Trigger sulla proprietà Visibility. Quello che puoi fare è aggiungere un'animazione Opacity da 1 a 0 a un Trigger per una proprietà diversa, ad esempio uno DependencyProperty che aggiungi il codice dietro te stesso.

0

È inoltre possibile utilizzare ObjectAnimationUsingKeyFrames per impostare Visibility per il periodo di animazione. In tal caso non è necessario alcun codice di sicurezza.

+0

Non sono sicuro al 100%, ma il HideStoryboard dovrebbe attivare lo ShowStoryboard se ha cambiato il valore di Visibility? – Peter