我試圖在應用程序設置中存儲自定義對象的集合。在應用程序設置中保存對象集合時遇到問題
與this related question一些幫助,這裏是我目前有:
// 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()方法似乎成功完成,沒有錯誤消息,但每次重新啓動應用程序設置都不會持久。
雖然沒有在上面的代碼中顯示,但我能夠堅持字符串,而不是我的自定義集合(我在其他類似的問題上注意到,所以有時會出現版本號的問題,從而無法在調試時保存設置我想排除這是可能的罪魁禍首。)
任何想法?我確信有一個非常簡單的方法來做到這一點,我只是想念:)。
感謝您的幫助!
謝謝你這樣簡單的解決方案。對我很好! – Seekeer
+1 - 像魅力一樣工作。謝謝。 :) –
+1是的,它也適用於我在同樣的情況。但是,也許你已經想出了更優雅的解決方案,而不是參與黑客設置settings.Designer.cs? – beduin