【发布时间】:2015-12-28 13:44:07
【问题描述】:
我正在开发 UWP Windows 10 应用。它包含一个列表视图,当我点击一个项目时将您重定向到另一个页面我试图在导航回到上一页时重新选择最后一个项目。
我的列表视图的 ItemSource 绑定到 ObservableCollection 并按预期加载我的项目,但是当我返回导航时,它会保持项目处于选中状态但不可见。
我读过各种文章:
Make ListView.ScrollIntoView Scroll the Item into the Center of the ListView
ListViewBase.ScrollIntoView methods
Windows 10 ScrollIntoView() is not scrolling to the items in the middle of a listview
还有很多其他人,我尝试使用上面提到的上一篇文章中的扩展,它为Listview 提供了各种扩展,我认为我会很好,但无济于事!
在调查和尝试各种事情时,我想我应该打个电话
protected async override void OnNavigatedTo(NavigationEventArgs e)
并调用以下代码:
if (e.NavigationMode == NavigationMode.Back)
{
if (GetViewModel.SelectedChannel != null)
{
await this.lvwChannels.ScrollToIndex
(GetViewModel.SelectedIndex);
}
}
或
if (e.NavigationMode == NavigationMode.Back)
{
if (GetViewModel.SelectedChannel != null)
{
await this.lvwChannels.ScrollToItem
(GetViewModel.SelectedItem);
}
}
但它仍然无法正常工作。
这是当我注意到我的 Listview.Items.count 返回 0 并且该项目已重新加载时,但我认为它们将在稍后阶段重新加载,所以我的问题是:
但我注意到以下内容:
-
单步执行扩展程序时,
public async static Task ScrollToIndex(this ListViewBase listViewBase, int index)
我的listViewBase.Items.Count 是 0??为什么?
尝试在 ListView 中查找
ScrollViewer时,找不到?-
调用时
var selectorItem = listViewBase.ContainerFromIndex(index) as SelectorItem;
selectorItem 为空,因为它没有根据索引找到任何内容。索引是唯一似乎设置正确的东西,即 10、23、37
有人可以指出正确的方向吗?我认为这是一个时间问题,并且我的 ObservableCollection 在此阶段尚未重新绑定。我可以在调用 ScrollIntoView 之前重新绑定,但这仍然无法解决我的 listViewBase 为空的事实。
有什么想法吗?
谢谢。
【问题讨论】:
-
我已经尝试按照本文中的建议附加一个属性:stackoverflow.com/questions/18019425/…,虽然我的列表视图包含数据,并且它调用了 ScrollIntoView,但它仍然没有显示相关项目!!!
标签: c# listview mvvm win-universal-app