更改为ObservableCollection时出错

本文关键字:出错 ObservableCollection | 更新日期: 2023-09-27 17:50:55

我是WPF新手,有一个初学者的问题。每当我向集合中添加数据时,我的UI只有在我重新启动程序后才会更新。我最初使用ICollection,但意识到我需要使用OvservableCollection来更新集合。当我将Customers属性从ICollection切换到ObservableCollection时,我在UpDate方法上得到一个错误,说我不能隐式转换。可以强制转换ObservableCollection。我还能怎么解决这个问题?提前谢谢。

ViewModel.cs

 public ViewModel()
    {
        Customers = new ObservableCollection<Customer>();
        UpDate();
    }
    public void UpDate()
    {
        Customers.Clear();
        foreach (var customer in context.Customers.OrderBy(c => c.Name))
        {
            Customers.Add(customer);
        }
    }
    #region Add new customer,project,program,rev methods
    public void AddCustomer(string customerName)
    {
        using (context = new RevisionModelContainer())
        {
            var customer = context.Customers;
            customer.Add(new Customer { Name = customerName });
            context.SaveChanges();
            UpDate();
        }          
    }

 public ObservableCollection<Customer> Customers { get; set; }
    public ObservableCollection<Project> Projects { get; set; }
    public ObservableCollection<Program> Programs { get; set; }
    public ObservableCollection<Revision> Revisions { get; set; }
    public DateTime Dates { get; set; }
    public string Notes { get; set; }

Customer.cs

  public partial class Customer
{
    public Customer()
    {
        this.Projects = new ObservableCollection<Project>();
    }
    public int Id { get; set; }
    public string Name { get; set; }
    public virtual ObservableCollection<Project> Projects { get; set; }
}

更改为ObservableCollection时出错

创建CustomersViewModel构造器中的实例

public ViewModel()
{
    Customers = new ObservableCollection<Customer>();
    UpDate();
}

并在UpDate调用

时填充列表
public void UpDate()
{
    Customers.Clear();
    foreach(var customer in context.Customers.OrderBy(c => c.Name)) Customers.Add(customer);
}