首页 > 解决方案 > 如何保存类似列表视图的数组?

问题描述

我有一个条目、一个保存按钮和一个列表视图。当用户向此列表添加条目时,如何保存首选项,以便下次我回到应用程序时,列表不会重置。我已经为这个工作创建了一个视图模型。

class EmploeeViewModel
    {
        public ICommand AddLinacCommand => new Command (AddLinac);
        public ObservableCollection<string> Emploees { get; set; }
        public string LinacName { get; set; }

        public EmploeeViewModel()

        {
            Emploees = new ObservableCollection<string>();
            Emploees.Add("Behzad.C");
            Emploees.Add("Abolfazl.N");
            Emploees.Add("Samira.Y");

        }
        public void AddLinac()
        {
            Emploees.Add(LinacName);
        }
    }
}

(所以我想要这个 void Addlinac 保存所有时间的用户条目)??????????????

标签: xamarinxamarin.forms

解决方案


Xamarin.Essentials:首选项是处理此问题的好方法。

但是插件不支持存储数组,所以我们必须先使用Newtonsoft.Json将数组转换成json字符串。

店铺

ObservableCollection<string> Emploees = new ObservableCollection<string>();
Emploees.Add("Behzad.C");
Emploees.Add("Abolfazl.N");
Emploees.Add("Samira.Y");


string json = JsonConvert.SerializeObject(Emploees);
Preferences.Set("my_key", json);

得到

var myValue = Preferences.Get("my_key", "default_value");
var Emploees = JsonConvert.DeserializeObject(myValue);

更新

//在视图模型中的使用

class EmploeeViewModel
    {
        public ICommand AddLinacCommand => new Command(AddLinac);
        public ObservableCollection<string> Emploees { get; set; }
        public string LinacName { get; set; }

        public EmploeeViewModel()
        {

            var myValue = Preferences.Get("my_key", "default_value");

            if(myValue != "default_value")
            {
                Emploees = JsonConvert.DeserializeObject(myValue) as ObservableCollection<string>;
            }
            else
            {
                Emploees = new ObservableCollection<string>();
            }

            string json = JsonConvert.SerializeObject(Emploees);
            Preferences.Set("my_key", json);
        }
        public void AddLinac()
        {
            Emploees.Add(LinacName);

            string json = JsonConvert.SerializeObject(Emploees);
            Preferences.Set("my_key", json);
        }
    }

推荐阅读