0

アプリケーションに複数のviewModelがあり、それらをViewModelLocatormvvmlightでバインド/使用しています。DailyActivities.xamlページの1つでボタンを実行しました。しかし、それをクリックすると、「オブジェクト参照がオブジェクトのインスタンスに設定されていません」などのエラーがViewModelLocatorに表示されます。そして制御はこの線に来る:

public static void ClearActivities(){_activities.Cleanup(); //ここでエラー_activities=null; }

ViewModelLocatorのDailyActivitiesViewModelのコードは次のとおりです。

プライベート静的ActivitiesViewModel_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();
        }
    }

親切に提案しますか?

ありがとう

4

1 に答える 1

1

フィールドを使用する前に、フィールドが存在するかどうかを判断する必要があります。フィールド_activitiesがすでにnullの場合、クリーンアップは必要ないようです。

どうしてこんなことをしないの?

public static void ClearActivites()
{
    if (null == _activities) return;
    _activities.Cleanup();
    _activities = null;
}
于 2010-07-12T08:30:13.970 に答える