WPF ListView コントロールに奇妙な動作があります。
ListViews ItemSource は監視可能なコレクションです。ItemSource は定期的に更新されます。
アイテムの1つを選択してから、他のアイテムを選択し、アイテムが更新されていない場合、すべて問題ありません。
しかし、アイテムを選択しているときに、立っている間に更新され、他のアイテムを選択すると、1 つではなく 2 つのアイテムが選択されるようになりました。
デバッガーで見ていると、SelectionChanged イベントのイベント引数が表示されます。追加されたアイテムは問題ありませんが、削除されたアイテムはありません。
誰が問題を知っていますか?
ありがとう!
編集:
私の観察可能なコレクション:
protected class CustomObservableCollection : ObservableCollection<T>
{
public void Refresh()
{
ListCollectionView lcv = (ListCollectionView)(CollectionViewSource.GetDefaultView(this));
lcv.Refresh();
}
}
アイテムに変更があったときに呼び出される更新メソッド ウィッチ:
public void RefreshItem(T domainObject)
{
foreach (T item in obsCollection) {
if (!DomainObjectComparer.Equals(domainObject, item)) continue;
DomainObjectCopier.CopyProperties(domainObject, item);
obsCollection.Refresh();
break;
}
}