我在 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 ListView !
经过一番研究,我找到了我的问题的答案,而且非常简单:
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
枚举允许您的程序通知您任何更改,例如:添加、移动、替换、删除和重置。
关于c# - WPF:在 ListView 中添加项目时引发事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10884031/