0

次のように、すべての割り当て(SQLデータベースのテーブル。ORMはLINQ to SQL)を一覧表示するためにItemsSourceを設定したListViewがあります。

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を常に更新するにはどうすればよいですか?
私のIリポジトリ:

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

1 に答える 1

3

その理由は、IAssignmentRepositoryがINotifyCollectionChangedインターフェイスを実装していないためだと思います。

ItemsSourceを設定する前にデータを追加すると、GUIが更新されるとすぐにデータが表示されます。ただし、その後の変更を行うと、リポジトリはデータバインドされたコントロールに通知しないため、更新は行われません。

また、DataContextが適切に設定されていることを前提としています。

于 2010-02-12T20:01:15.067 に答える