0

我的应用程序中有一个列表框,它加载了很多对象,所以我使用异步绑定到它的 ItemsSource 属性来不阻塞 UI。

我的问题是我想在加载 ItemsSource 时滚动到所选项目,因此异步绑定(使用 ListView.ScrollIntoView() 方法)。

有谁知道这个的解决方案?或者我应该使用哪个 ListView 事件在正确的时间发生?

4

2 回答 2

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);
    }
}
于 2015-06-30T13:13:03.170 回答
0

啊,我找到了解决方案!LisBox 有一个名为 SelectionChanged 的​​事件。此事件对我来说很好,因为 SelectedItem 是通过绑定为我的列表框设置的,并且当加载异步字体列表时,将触发此事件,因为将在 UI 中选择所选项目。

如果我在此事件中调用 ScrollIntoView() 则它可以正常工作。而且由于我仅在加载字体系列时才需要此行为,因此我在将列表框滚动到所选项目后立即取消订阅此事件。

于 2015-06-30T14:01:17.320 回答