У меня есть ListView, что я поставил его ItemsSource перечислить все задания (таблица в моей базе данных SQL, ORM является LINQ к SQL), как так:Обновить список ItemsViewViewSource постоянно?
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 мой Repository, потому что я использую шаблон репозитория) Когда я положил этот кусок кода, прежде чем я устанавливаю ItemsSource в ListView в , показывает образец. НО, когда этот бит кода находится где-то после того, как ItemSource установлен, образец не отображается. Как я могу постоянно обновлять ItemsSource каждый раз, когда добавляется Assignment?
Мои IRepository:
public interface IAssignmentRepository
{
Assignment CreateAssignment(Assignment assignmentToCreate);
void DeleteAssignment(Assignment assignmentToDelete);
Assignment GetAssignment(int id);
IEnumerable<Assignment> ListAssignments();
void SaveChanges();
}
На самом деле я не задал свойство DataContext. –
Это проблема? –
Абсолютно вам необходимо установить DataContext, или привязка данных не будет работать. Ниже приведен быстрый тест (после того, как ваше репо реализует INotifyCollectionChanged) - запустите приложение и посмотрите, не возникли ли ошибки привязки данных в окне вывода при обновлении вашего репозитория. Чтобы устранить любые другие возможности, попробуйте реализовать тестовый контейнер, который наследуется от ObservableCollection, так как это никогда не подводило меня. Он реализует для вас INotifyCollectionChanged. Если вы используете это, и вы не получаете обновлений, вы узнаете, что вам нужно правильно установить DataContext. –
Dave