Tôi đang cố gắng lưu trữ một bộ sưu tập các đối tượng tùy chỉnh trong Cài đặt ứng dụng.Gặp sự cố khi lưu tập hợp các đối tượng trong Cài đặt ứng dụng
Với một số sự giúp đỡ từ this related question, đây là những gì tôi hiện có:
// 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());
}
}
Trong thiết kế Settings.settings tôi đã thêm tài sản của loại PeopleHolder qua nút trình duyệt, và thiết lập các phạm vi để 'Người dùng'. Phương thức Save() dường như hoàn tất thành công, không có thông báo lỗi, nhưng mỗi lần tôi khởi động lại các thiết lập ứng dụng không được duy trì.
Mặc dù không được hiển thị trong đoạn mã trên, tôi vẫn có thể duy trì các chuỗi, chứ không phải bộ sưu tập tùy chỉnh của tôi (tôi nhận thấy trong các câu hỏi tương tự khác trên SO có thể có vấn đề với số phiên bản. Tôi muốn loại trừ đó là thủ phạm có thể.)
Bất kỳ ý tưởng nào? Tôi chắc chắn có một cách rất đơn giản để làm điều này mà tôi chỉ thiếu :).
Cảm ơn sự giúp đỡ của bạn!
Cảm ơn giải pháp đơn giản như vậy. Làm việc tuyệt vời cho tôi! – Seekeer
+1 - Hoạt động như một sự quyến rũ. Cảm ơn. :) –
+1 Vâng, nó hoạt động cho tôi trong tình huống tương tự quá. Nhưng có lẽ bạn đã đưa ra giải pháp thanh lịch hơn không phải thiết lập hack. Designer.cs? – beduin