C# 访问静态ObservableCollection时出现NullReferenceException

C# 访问静态ObservableCollection时出现NullReferenceException,c#,visual-studio-2010,windows-phone-7,C#,Visual Studio 2010,Windows Phone 7,我正在为我的Windows Phone课程编写一个程序,我遇到了一点问题。当我尝试启动应用程序时,当我尝试访问静态ObservableCollection时,我会得到一个空引用异常。我认为因为它是静态的,所以我不需要实例化它。我做错什么了吗?方法如下: protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e) { base.OnNavigatedTo(e); thi

我正在为我的Windows Phone课程编写一个程序,我遇到了一点问题。当我尝试启动应用程序时,当我尝试访问静态ObservableCollection时,我会得到一个空引用异常。我认为因为它是静态的,所以我不需要实例化它。我做错什么了吗?方法如下:

protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
{
    base.OnNavigatedTo(e);
    this.DataContext = null;
    this.DataContext = Settings.NotesList;
    Settings.CurrentNoteIndex = -1;
    TheListBox.SelectedIndex = -1;
    if (Settings.NotesList.Count <= 0) // EXCEPTION
    {
        NoteStatus.Visibility = System.Windows.Visibility.Visible;
        TheListBox.Visibility = System.Windows.Visibility.Collapsed;
    }
    else
    {
        NoteStatus.Visibility = System.Windows.Visibility.Collapsed;
        TheListBox.Visibility = System.Windows.Visibility.Visible;
    }
}
受保护的覆盖无效OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
{
基地。导航到(e);
this.DataContext=null;
this.DataContext=Settings.NotesList;
Settings.CurrentNoteIndex=-1;
listbox.SelectedIndex=-1;

如果(Settings.NotesList.Count即使通过其静态,它仍然需要在某处实例化。

即使通过其静态,它仍然需要在某处实例化。

为什么不执行NotesList=newobserveCollection()在静态ctor中?这工作得很好。谢谢,我对C#相当陌生。因此,它不是您需要实例化的设置类,而是该类的NotesList属性。为什么不执行NotesList=new ObservableCollection()在静态ctor中?这工作得很好。谢谢,我对C#相当陌生。因此,您需要实例化的不是设置类,而是该类的NotesList属性。谢谢,Johan为我指出了正确的方向,我在构造函数中实例化了它。@Derekwo如果我想知道您是如何在构造函数中实例化静态类的,我会很好奇或者?@Dotnebeginner,不,他在静态构造函数中实例化了一个
ObservableCollection
。谢谢,Johan给我指出了正确的方向,我在构造函数中实例化了它。@Derko如果我想知道你是如何在构造函数中实例化静态类的,那么@Dotnebeginner,不,他实例化了一个
ObservableCollection在静态构造函数中。
public static class Settings
{
    static Settings() { }
    public static ObservableCollection<Note> NotesList;
    static IsolatedStorageSettings settings;
    private static int currentNoteIndex;
    public static int CurrentNoteIndex { get; set; }
}