winformsフォームにバインディングソースを持つバインディングナビゲーターがあります。私のデータソースは、エンティティ フレームワーク リストから取得されます。
Pluralsightの Julie Lerman コースで学んだ手法を使用して、バインディング ソース内の各エンティティの状態を追跡したいと考えています。
追加と編集は簡単です。追加ボタンと削除ボタンのイベントを入力するだけです。
private void bindingNavigatorAddNewItem_Click(object sender, EventArgs e)
{
((IEntity)(this.personBindingSource.Current)).State = EntityState.Added;
}
private void bindingNavigatorDeleteItem_Click(object sender, EventArgs e)
{
((IEntity)(this.personBindingSource.Current)).State = EntityState.Deleted;
}
ただし、EditItemClick イベントはありません。エンティティが変更されたかどうかを追跡するにはどうすればよいですか?
ドメインクラス Person の非接続リストにバインドしていることに注意してください
List<Person> people = MyRepository.GetPeople();
this.personBindingSource.DataSource =people;
this.personBindingNavigator.BindingSource = this.personBindingSource;
インターフェイス IENtity があります
public interface IEntity
{
EntityState State { get; set; }
}
public enum EntityState
{
Unchanged,
Added,
Modified,
Deleted
}
Person はその [Update] から継承し、bindingSource イベント プロパティを見ると、プロパティが変更されると CurrentItemChanged が発生することがわかります。ただし、現在のアイテム自体が変更された場合にも発生します。
それがどの理由で提起されたかを解決する方法はありますか?