2010-01-08 3 views
0

Dans mon application, j'instancie une nouvelle instance de ma vue dans le constructeur de son modèle de vue associé. J'ai aussi quelques événements auxquels m'inscrire avec un agrégateur d'événements.Comment réinitialiser Silverlight Afficher dans ViewModel sans créer une nouvelle instance

public class FooViewModel 
{ 
    private FooView TheView { get; set; } 
    private IEventAggregator Aggregator { get; set; } 

    public FooViewModel() 
    { 
     Aggregator = new EventAggregator(); 
     Aggregator.GetEvent<ListReceivedEvent>() 
      .Subscribe(OnListReceived, ThreadOption.UIThread, true); 
     TheView = new FooView(); 
    } 

    public void OnListReceived(ObservableCollection<int> items) 
    { 
     TheView.Items = items; 
    } 
} 

Le problème est que si la vue est manipulé et je reload pour un autre type de Foo, puis les restes de son bâton précédent autour de l'utilisation. Une façon de contourner ce problème consiste à instancier une nouvelle vue à chaque fois qu'un autre contexte est nécessaire, mais cela entraîne des problèmes avec l'utilisation de RegionManager dans l'application. Est-il possible de réinitialiser une vue Silverlight à son état initial sans avoir à instancier une nouvelle instance de celle-ci?

Répondre

0

Pas automatiquement. Je pense que vous devrez écrire une méthode Reset() dans la vue où vous effacez manuellement tout ce qui a besoin d'être effacé.

Questions connexes