在c#中打开一个空列表

时间:2013-11-28 14:35:54

标签: c# list xaml windows-phone-8 windows-phone

我正在创建一个使用一个列表内容的应用程序来打开另一个列表。但是为了让应用程序工作,它需要从IsolatedStorage打开一个包含任何内容的列表,列表存在,但它是空的。

在第一个MainPage.xaml.cs中,我创建一个新列表,将列表保存到IsolatedStorage,然后将列表的名称传递给另一个SecondPage.xaml.cs页面:

String listName; //Declared global in class

IsolatedStorageSettings settings = IsolatedStorageSettings.ApplicationSettings;

List<String> emptyList = new List<String>();
settings.Add(listName, emptyList);
settings.Save();

//Here i'm passing it to the second page

NavigationService.Navigate(new Uri("/subjectsPage.xaml?key=" + listName, UriKind.Relative));

这是处理此信息并尝试打开空列表的第二个类

IsolatedStorageSettings settings; //Declared global in class

settings = IsolatedStorageSettings.ApplicationSettings; //Executed in public secondPage() method

帮助方法:

        private static object readSetting(string key)
    {
        return IsolatedStorageSettings.ApplicationSettings.Contains(key) ? IsolatedStorageSettings.ApplicationSettings[key] : null;
    }

用于打开列表本身的代码,但在此处失败,并且在“//失败”行的位置调用异常:

List List; //Declared global in class

protected override void OnNavigatedTo(NavigationEventArgs e)
    {
        if (NavigationContext.QueryString.ContainsKey("key"))
        {
            string listName= NavigationContext.QueryString["key"];
            try
            {
                //Clear listBoxjust in case
                listBox.Clear();

                List = readSetting(listName) != null ? (List<String>)readSetting(listName) : new List<String>();
            }
            catch (Exception)
            {
              //Failed
            }
        }
    }

您对如何解决此问题有任何想法吗?我可以在列表中添加一个空字符串,然后在另一个页面执行onNavigatedTo()时加载列表后将其删除???

1 个答案:

答案 0 :(得分:0)

我实际上发现,错误是我试图清除这样的未初始化列表:

            //Clear listBoxjust in case
            listBox.Clear();