Постоянно обновлять ItemsSource ListView? - PullRequest
0 голосов
/ 12 февраля 2010

У меня есть ListView, который я установил в ItemsSource, чтобы вывести список всех назначений (таблица в моей базе данных 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 - мой репозиторий, потому что я использую шаблон репозитория). Когда я помещаю этот бит кода перед тем, как установить ListSource ListView, показан пример. НО, когда этот бит кода находится где-нибудь после того, как установлен ItemsSource, образец не показывается. Как я могу постоянно обновлять ItemsSource при каждом добавлении Назначения?
Мой IRepository:

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

1 Ответ

3 голосов
/ 12 февраля 2010

Я думаю, причина в том, что ваш IAssignmentRepository не реализует интерфейс INotifyCollectionChanged.

Когда вы добавляете данные перед настройкой ItemsSource, данные уже доступны для просмотра, как только обновится графический интерфейс. Но когда вы вносите последующие изменения, так как хранилище не будет уведомлять элемент управления, связанный с данными, обновления не происходят.

Я также предполагаю, что вы правильно установили DataContext.

...