不断更新ListView ItemsSource?

时间:2010-02-12 19:55:33

标签: c# wpf repository-pattern itemssource

我有一个ListView,我将其设置为ItemsSource以列出所有Assignments(我的SQL数据库中的表,ORM是LINQ to SQL),如下所示:

ltvAssignments.ItemsSource = _repo.ListAssignments();

(这段代码正好在调用InitializeCompenent()之后)为此,我添加了一个示例:

Assignment sample1 = new Assignment()
        {
            Title = "A Test",
            Start = DateTime.Now,
            Due = DateTime.Now,
            Kind = (byte) Kind.Assignment,
            Priority = (byte) Priority.Medium,
        };
        _repo.CreateAssignment(sample1);
        _repo.SaveChanges(); 

(其中_repo是我的存储库,因为我正在使用存储库模式)当我在设置ListView的ItemsSource之前放置这段代码时,示例显示。但是当这个代码位于ItemsSource设置之后的任何地方时,样本都不显示。每次添加作业时,如何不断更新ItemsSource? 我的IRepository:

public interface IAssignmentRepository
{
    Assignment CreateAssignment(Assignment assignmentToCreate);
    void DeleteAssignment(Assignment assignmentToDelete);
    Assignment GetAssignment(int id);
    IEnumerable<Assignment> ListAssignments();
    void SaveChanges();
}

1 个答案:

答案 0 :(得分:3)

我认为原因是你的IAssignmentRepository没有实现INotifyCollectionChanged接口。

在设置ItemsSource之前添加数据时,只要GUI更新,数据就已存在供查看。但是当您进行后续更改时,由于存储库不会通知数据绑定控件,因此不会进行更新。

我还假设您已正确设置DataContext。