在 Windows Phone 8 上逻辑删除列表



我正在尝试在wp上保存列表框的状态。我使用这种方法对文本框的内容进行逻辑删除,它工作得很好,但我在字符串列表方面遇到了问题:

基本上我有一个名为beta的字符串列表,我必须单击一个按钮才能生成列表。所以我希望如果我关闭或停用我的应用程序,然后重新启动它,列表就会在不按按钮的情况下显示

   List<string> beta;
   private void b_Click_1(object sender, RoutedEventArgs e)
   {
            List<string> beta = new List<string>{
                "string","string","string",
                "string","string","string",
                "string", };
            list.ItemsSource = beta;
            phoneAppService.State["_List"] = beta;
   }
   private void PhoneApplicationPage_Loaded_1(object sender, RoutedEventArgs e)
   {
            object myValue;
            if(phoneAppService.State.TryGetValue("_List", out List<myValue)> ){
                 list.ItemsSource  = myValue;
            }
   }

但是在以下位置出现问题:

phoneAppService.State.TryGetValue("MyValue", out List<myValue)>

尽管此方法适用于一个字符串,但它不适用于列表。

对于字符串列表,应该使用哪种方法?

编辑:

以下是我在 app.xaml.cs 类中的方法,我在应用程序关闭、停用、启动或打开时调用这些方法:

 private void SaveState() {
            PhoneApplicationService phoneAppService = PhoneApplicationService.Current;
            IsolatedStorageSettings settings = IsolatedStorageSettings.ApplicationSettings;
            settings["MyValue"] = phoneAppService.State["MyValue"];
            if(settings.Contains("_List")){
                settings["_List"] = phoneAppService.State["_List"];
            }
        }
        private void LoadState() {
            PhoneApplicationService phoneAppService = PhoneApplicationService.Current;
            IsolatedStorageSettings settings = IsolatedStorageSettings.ApplicationSettings;
            string myValue = "";
            if(settings.TryGetValue<string>("MyValue", out myValue  )){
                phoneAppService.State["MyValue"] = myValue;
            }
           List<string> myValues;
            if (settings.TryGetValue<List<string>>("_List", out myValues))
            {
                phoneAppService.State["_List"] = myValues as List<string>;
            }
        }

正如我之前所说,此方法适用于在文本框中正确还原的字符串,但不适用于字符串列表

当您将其添加到 State 时,beta似乎已经是一个List<string>。当你把它拉出来时,它应该已经是一个List<string>,所以你不需要在 TryGetValue 调用中把它变成一个List<myvalue>。它应该看起来更直接,例如:

private void PhoneApplicationPage_Loaded_1(object sender, RoutedEventArgs e)
{
    object myValue;
    if(phoneAppService.State.TryGetValue("_List", out myValue))
    {
        list.ItemsSource  = myValue as List<string>;
    }
}

相关内容

  • 没有找到相关文章

最新更新