Buc*_*uck 2 c# wpf listview command event-handling
我尝试在按钮单击处理程序中添加以下内容:
ListView listView = MyListView;
int lastItemIndex = listView.Items.Count - 1;
listView.ScrollIntoView(listView.Items[lastItemIndex]);
listView.UpdateLayout();
Run Code Online (Sandbox Code Playgroud)
按钮单击还与命令处理程序相关联,该命令处理程序将项目添加到与 ListView 关联的 ObservableCollection。
问题是按钮单击处理程序在我的命令处理程序之前调用,因此为时过早。在按钮单击处理程序中,ListView 还没有看到带有添加项的更新 ObservableCollection。什么事件或者更好的是,在我的项目添加到 ObservableCollection 后,如果不更改背后的代码以使 ListView 滚动到末尾,我可以做什么?我已经看过但在stackoverflow中还没有找到答案。谢谢!
如果ItemSource 是 ObservableCollection,则可以在 Window/UserControl 构造函数中挂钩CollectionChanged事件,并在将项目添加到集合中时将最后一个项目滚动到视图中。
假设您的基础类是TesClass,您将这样做:
((INotifyCollectionChanged)listView.ItemsSource).CollectionChanged +=
(s, e) =>
{
if (e.Action ==
System.Collections.Specialized.NotifyCollectionChangedAction.Add)
{
listView.ScrollIntoView(listView.Items[listView.Items.Count - 1]);
}
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1790 次 |
| 最近记录: |