Ссылка на объект не установлена ​​для экземпляра объекта в ViewModelLocator Mvvm Light - PullRequest
0 голосов
/ 12 июля 2010

У меня есть несколько viewModels в моем приложении, и я связываю / использую их в ViewModelLocator mvvm light.Я сделал кнопку на одной из моих страниц DailyActivities.xaml.но когда я щелкнул по нему, он выдает ошибку в ViewModelLocator, например, «Ссылка на объект не установлена ​​на экземпляр объекта».и управление приходит к этой строке:

public static void ClearActivities () {_activities.Cleanup ();// Ошибка здесь _activities = null;}

вот код для DailyActivitiesViewModel в ViewModelLocator:

приватная статическая ActivityViewModel _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();
        }
    }

Просьба предложить?

Спасибо

1 Ответ

1 голос
/ 12 июля 2010

Вам нужно определить, существует ли поле, прежде чем вы сможете его использовать: кажется, что если поле _activities уже пусто, очистка не требуется.

почему бы не сделать что-то вроде

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