1

我正在尝试在 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>;
            }
        }

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

4

1 回答 1

1

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

private void PhoneApplicationPage_Loaded_1(object sender, RoutedEventArgs e)
{
    object myValue;
    if(phoneAppService.State.TryGetValue("_List", out myValue))
    {
        list.ItemsSource  = myValue as List<string>;
    }
}
于 2013-12-24T20:11:12.823 回答