我有一个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();
}
答案 0 :(得分:3)
我认为原因是你的IAssignmentRepository没有实现INotifyCollectionChanged接口。
在设置ItemsSource之前添加数据时,只要GUI更新,数据就已存在供查看。但是当您进行后续更改时,由于存储库不会通知数据绑定控件,因此不会进行更新。
我还假设您已正确设置DataContext。