📅  最后修改于: 2023-12-03 14:53:44.553000             🧑  作者: Mango
在 WPF 和 UWP 中,ObservableCollection
被广泛地用于将数据绑定到界面元素上。而通常情况下,我们需要将这些数据存储到数据层中的列表中进行操作和管理。这篇文章将介绍如何将 ObservableCollection
放入到数据层中的列表中。
以下是将 ObservableCollection
放入到数据层中的列表中的步骤:
我们首先需要定义一个数据实体类来表示数据。例如,如果我们要维护一个联系人列表,我们可以这样创建一个数据实体类:
public class Contact
{
public string Name { get; set; }
public string Email { get; set; }
public string Phone { get; set; }
}
然后我们需要创建一个数据层类来管理联系人列表。我们可以使用 List<Contact>
来存储联系人数据,并提供一些方法来添加、删除、更新和查询联系人。例如,下面是一个简单的示例:
public class ContactsManager
{
private List<Contact> _contacts = new List<Contact>();
public void AddContact(Contact contact)
{
_contacts.Add(contact);
}
public void RemoveContact(Contact contact)
{
_contacts.Remove(contact);
}
public void UpdateContact(Contact contact)
{
// 如果联系人已经在列表中,更新它的属性。
// 如果联系人不在列表中,添加它。
var existingContact = _contacts.FirstOrDefault(c => c.Name == contact.Name);
if (existingContact != null)
{
existingContact.Name = contact.Name;
existingContact.Email = contact.Email;
existingContact.Phone = contact.Phone;
}
else
{
_contacts.Add(contact);
}
}
public IReadOnlyList<Contact> GetContacts()
{
// 返回只读列表以防止外部代码修改列表数据。
return _contacts.AsReadOnly();
}
}
然后我们可以在视图模型中创建一个 ObservableCollection<Contact>
,并将它绑定到界面元素上。当添加、删除、更新或查询联系人时,我们可以将修改操作转换为数据层的方法调用。例如,下面是一个简单的视图模型示例:
public class ContactsViewModel
{
private ObservableCollection<Contact> _contacts = new ObservableCollection<Contact>();
private ContactsManager _contactsManager = new ContactsManager();
public ObservableCollection<Contact> Contacts
{
get { return _contacts; }
set { _contacts = value; }
}
public void AddContact(Contact contact)
{
_contactsManager.AddContact(contact);
_contacts.Add(contact);
}
public void RemoveContact(Contact contact)
{
_contactsManager.RemoveContact(contact);
_contacts.Remove(contact);
}
public void UpdateContact(Contact contact)
{
_contactsManager.UpdateContact(contact);
}
public void LoadContacts()
{
var contacts = _contactsManager.GetContacts();
foreach (var contact in contacts)
{
_contacts.Add(contact);
}
}
}
在这个示例中,我们将 ObservableCollection<Contact>
和 ContactsManager
分别存储在视图模型中,然后通过 AddContact
、RemoveContact
、UpdateContact
和 LoadContacts
方法来对数据进行操作。当 AddContact
、RemoveContact
和 UpdateContact
被调用时,我们将会同时更新数据层中的联系人列表和视图模型中的 ObservableCollection
。当 LoadContacts
被调用时,我们将从数据层中加载联系人,并将它们添加到 ObservableCollection
中。
通过这个简单的示例,我们可以看到如何将 ObservableCollection
放入到数据层中的列表中。这种方法使得我们可以通过 ObservableCollection
来轻松绑定数据到界面上,并通过 List
来进行高效的数据操作。