【问题标题】:Object reference not set to an instance of an object in ViewModelLocator Mvvm Light对象引用未设置为 ViewModelLocator Mvvm Light 中的对象实例
【发布时间】:2010-07-12 07:19:19
【问题描述】:

我的应用程序中有多个视图模型,并在 ViewModelLocator mvvm light 中绑定/使用它们。我在 DailyActivities.xaml 页面之一上完成了按钮。但是当我单击它时,它在 ViewModelLocator 中出现错误,例如“对象引用未设置为对象的实例”。和控制来到这一行:

公共静态无效ClearActivities() { _activities.Cleanup(); //这里出错 _活动=空; }

这里是 ViewModelLocator 中 DailyActivitiesViewModel 的代码:

私有静态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();
        }
    }

请推荐?

谢谢

【问题讨论】:

    标签: wpf mvvm light


    【解决方案1】:

    您需要先确定该字段是否存在,然后才能使用它:看起来如果字段 _activities 已经为空,则不需要清理。

    为什么不做类似的事情

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

    【讨论】:

    • @IanR。谢谢上面的帮助我很多。但是现在我在一个窗口上有一个带有确定和取消按钮的对话框。当我从其他窗口来到这个窗口时,如果我点击这个按钮,它会要求点击确定或取消。当我单击取消时,窗口会关闭,但如果我再次重复该过程并想要取消窗口,我必须再次单击取消按钮两次 n 再次表示三次四 n 等等。请建议?谢谢
    • 如何检查此对话框的空值?请推荐?
    • @Tarun:在评论中为您的问题分享一些代码。否则考虑提出一个新问题。
    • @Veer。现在通过使用 Messenger.Reset() 来完成。谢谢
    • @Tarun:如果这个答案对你有帮助,你可以把它标记为答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多