我的应用程序中有一个列表框,它加载了很多对象,因此我使用async绑定到其ItemsSource属性而不是阻止UI。
我的问题是我想在ItemsSource时滚动到所选项,因此加载了异步绑定(使用ListView.ScrollIntoView()方法)。
有人知道这方面的解决方案吗?或者我应该使用ListView的哪个事件发生在正确的时间用于此目的?
答案 0 :(得分:0)
也许这样可行......如果ListView
名为myListView
,您可以在每次更改项目时进行检查,并将所选项目滚动到视图中。
myListView.ItemContainerGenerator.ItemsChanged += new ItemsChangedEventHandler(ItemContainerGenerator_ItemsChanged);
事件处理程序:
void ItemContainerGenerator_ItemsChanged(object sender, ItemsChangedEventArgs e)
{
if (myListView.SelectedItem != null)
{
myListView.ScrollIntoView(myListView.SelectedItem);
}
}
答案 1 :(得分:0)
啊我找到了解决方案! LisBox有一个名为SelectionChanged的事件。这个事件对我来说很好,因为通过绑定为我的列表框设置了SelectedItem,当加载了异步字体列表时,将触发此事件,因为将在UI中选择所选项目。
如果我在此事件中调用ScrollIntoView(),那么它可以正常工作。因为我只在加载字体系列时才需要这种行为,所以在我将列表框滚动到所选项目之后立即取消订阅此事件。