2010-07-12 6 views
0

J'ai plusieurs viewModels dans mon application et je les lie/les utilise dans ViewModelLocator mvvm light. J'ai fait un bouton sur une de mes pages DailyActivities.xaml. mais quand j'ai cliqué dessus, cela me donne une erreur dans ViewModelLocator comme "Référence d'objet non définie à une instance d'un objet". et le contrôle arrive à cette ligne:Référence d'objet non définie sur une instance d'un objet dans ViewModelLocator Mvvm Light

public static void ClearActivities() { _activities.Cleanup(); // Erreur ici _activities = null; }

ici est le code pour DailyActivitiesViewModel dans ViewModelLocator:

ActivitiesViewModel private static _activities;

  public static ActivitiesViewModel ActivitiesStatic 
    { 
     get 
     { 
      if (_activities == null) 
      { 
       CreateActivities(); 
      } 

      return _activities; 
     } 
    } 

    /// <summary> 
    /// Gets the ViewModelPropertyName property. 
    /// </summary> 
    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", 
     "CA1822:MarkMembersAsStatic", 
     Justification = "This non-static member is needed for data binding purposes.")] 
    public ActivitiesViewModel Activities 
    { 
     get 
     { 
      return ActivitiesStatic; 
     } 
    } 

    /// <summary> 
    /// Provides a deterministic way to delete the ViewModelPropertyName property. 
    /// </summary> 
    public static void ClearActivities() 
    { 
     _activities.Cleanup(); --Error here 
     _activities = null; 
    } 

    /// <summary> 
    /// Provides a deterministic way to create the ViewModelPropertyName property. 
    /// </summary> 
    public static void CreateActivities() 
    { 
     if (_activities == null) 
     { 
      _activities = new ActivitiesViewModel(); 
     } 
    } 

Veuillez suggérer?

Merci

Répondre

1

Vous devez déterminer si le champ existe avant de pouvoir l'utiliser: Il semble que si le champ est déjà _activities nulle alors aucun nettoyage est nécessaire.

pourquoi ne pas faire quelque chose comme

public static void ClearActivites() 
{ 
    if (null == _activities) return; 
    _activities.Cleanup(); 
    _activities = null; 
} 
+0

@IanR. Thanx ce qui précède m'a beaucoup aidé. Mais maintenant j'ai une boîte de dialogue avec le bouton OK et Annuler sur une fenêtre. Quand je viens à cette fenêtre de l'autre fenêtre et si je clique sur ce bouton, il demande OK ou Annuler pour cliquer. quand je clique sur annuler, la fenêtre se ferme mais si je répète encore le processus et que je veux annuler la fenêtre, je dois cliquer deux fois sur le bouton annuler et encore n signifie trois fois quatre fois. Veuillez suggérer? Merci – Tarun

+0

Comment vérifier la valeur null pour cette boîte de dialogue? Veuillez suggérer? – Tarun

+0

@Tarun: Partagez du code pour votre question dans le commentaire. Sinon, pensez à poser une nouvelle question. – Amsakanna

Questions connexes