我正在尝试在应用程序设置中存储自定义对象的集合。
在这个相关问题的一些帮助下,这是我目前拥有的:
// implementing ApplicationSettingsBase so this shows up in the Settings designer's
// browse function
public class PeopleHolder : ApplicationSettingsBase
{
[UserScopedSetting()]
[SettingsSerializeAs(System.Configuration.SettingsSerializeAs.Xml)]
public ObservableCollection<Person> People { get; set; }
}
[Serializable]
public class Person
{
public String FirstName { get; set; }
}
public MainWindow()
{
InitializeComponent();
// AllPeople is always null, not persisting
if (Properties.Settings.Default.AllPeople == null)
{
Properties.Settings.Default.AllPeople = new PeopleHolder()
{
People = new ObservableCollection<Person>
{
new Person() { FirstName = "bob" },
new Person() { FirstName = "sue" },
new Person() { FirstName = "bill" }
}
};
Properties.Settings.Default.Save();
}
else
{
MessageBox.Show(Properties.Settings.Default.AllPeople.People.Count.ToString());
}
}
在 Settings.Settings 设计器中,我通过浏览器按钮添加了 PeopleHolder 类型的属性,并将范围设置为“用户”。Save() 方法似乎成功完成,没有错误消息,但每次我重新启动应用程序设置都没有持久化。
虽然上面的代码中没有显示,但我可以保留字符串,而不是我的自定义集合(我注意到在其他类似的问题中,有时版本号可能会出现问题,这会阻止在调试时保存设置,所以我想统治作为可能的罪魁祸首。)
有任何想法吗?我确信有一种非常简单的方法可以做到这一点,我只是想念:)。
谢谢你的帮助!