2010-05-28 11 views
0

J'ai un View.xaml avec ce qui suit situé dans Ressources section:MVVM avec des animations (? Dois-je utiliser VisualStateManager)

<DataTemplate DataType="{x:Type ViewModels:MyFirstViewModel}"> 
    <Views:MyFirstView Content="{Binding}" /> 
</DataTemplate> 

<DataTemplate DataType="{x:Type ViewModels:MySecondViewModel}"> 
    <Views:MySecondView Content="{Binding}"/> 
</DataTemplate> 

Dans le contenu du View.xaml je:

<!-- SelectedMyViewModel is either set to MyFirstViewModel or MySecondViewModel --> 
<ContentControl Content="{Binding SelectedMyViewModel}" /> 

Lorsque les changements de SelectedMyViewModel je voudrais avoir une animation, de sorte que la vue actuelle est supprimé, la nouvelle vue est fanée dans ...

d'une certaine façon je pense que ce devrait être possible via le VisualStateManag er - mais je ne peux pas comprendre comment!

Ce projet WPF 4.0 ...

Répondre

0

Vous peut-être en mesure de vous la réponse à cette question pour vous aider WPF Fade Animation.

Ils effectuent un FadeIn/FadeOut sur la visibilité. Il pourrait être possible de changer le déclenchement de ...

<Trigger Property="Visibility" Value="Visible"> 

à ...

<Trigger Property="Content" Value="{x:Null}"> 

Donc, mon idée serait que la transition entre ViewModels vous feriez quelque chose comme

public void SwapViewModels() 
{ 
    // SelectedMyViewModel contains a MyFirstViewModel 
    // Setting to null fires the Animation to fadeout 
    SelectedMyViewModel = null; 

    // Setting the Value to anything but null, should fire the fadein animation 
    SelectedMyViewModel = new MySecondViewModel(); 
} 

Je n'ai pas testé le code mais j'espère que cela vous donne un point de départ.

+0

Désolé pour l'acceptation tardive de votre réponse, mais je suis allé un autre itinéraire - mais je suis sûr que votre réponse est correcte - d'où l'acceptation! – kennethkryger

+0

@kennethkryger: Vous voulez ajouter votre itinéraire comme réponse? =) – Jens