2010-06-15 4 views
0

J'ai récupéré un échantillon avec mainView et 2 autres vues (usercontrols). J'ai placé un bouton "fermer" sur la vue enfant et je veux fermer cette vue. il y a une commande attachée à ce bouton, et lorsque vous appuyez sur close, je demande à ViewModelLocator de le nettoyer. BUt- la vue est toujours affichée. Qu'est-ce que je fais mal? Comment fermer une vue userControl avec mvvm-light?Comment fermer une vue UserControl dans mvvm-light?

private RelayCommand _closeCommand; 
    public RelayCommand CloseCommand 
    { 
     get 
     { 
      if (_closeCommand == null) 
      { 
       _closeCommand = new RelayCommand(()=> 
        ViewModelLocator.ClearAllChannels(), 

        ); 
      } 
      return _closeCommand; 
     } 

    } 

fonction ViewModelLocator:

public static void ClearAllChannels() 
    { 
     if (_allChannels != null) 
     { 
      _allChannels.Cleanup(); 
      _allChannels = null; 
     } 
    } 

Répondre

0

Le ViewModelLocator ne héberge pas vraiment votre point de vue. Il fournit simplement un moyen de rechercher le ViewModel qui prend en charge une vue particulière.

Vous devez donc demander au contrôle qui héberge vos vues (probablement une fenêtre ou un cadre) de les fermer.

Questions connexes