私はWPFに取り組んでおり、ListViewを使用しています。アイテムが追加されたときに、イベントを発生させる必要があります。私はこれを試しました:
var dependencyPropertyDescriptor = DependencyPropertyDescriptor.FromProperty(ItemsControl.ItemsSourceProperty, typeof(ListView));
if (dependencyPropertyDescriptor != null)
{
dependencyPropertyDescriptor.AddValueChanged(this, ItemsSourcePropertyChangedCallback);
}
...。
private void ItemsSourcePropertyChangedCallback(object sender, EventArgs e)
{
RaiseItemsSourcePropertyChangedEvent();
}
しかし、コレクション全体が変更された場合にのみ機能しているようです。私はこの投稿を読みました: event-fired-when-item-is-added-to-listview 、しかし最良の答えはlistBoxのみ。コードをListViewに変更しようとしましたが、変更できませんでした。
あなたが私を助けてくれることを願っています。前もって感謝します。
これはWPFリストビューでのみ機能することに注意してください!
いくつかの調査の後、私は私の質問に対する答えを見つけました、そしてそれは本当に簡単です:
public MyControl()
{
InitializeComponent();
((INotifyCollectionChanged)listView.Items).CollectionChanged += ListView_CollectionChanged;
}
private void ListView_CollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
{
if (e.Action == NotifyCollectionChangedAction.Add)
{
// scroll the new item into view
listView.ScrollIntoView(e.NewItems[0]);
}
}
実際、NotifyCollectionChangedAction
列挙型を使用すると、プログラムは、追加、移動、置換、削除、リセットなどの変更について通知することができます。