【发布时间】:2015-05-11 15:39:05
【问题描述】:
我在设置 Scroll Viewer 垂直滚动位置(C#、Windows Store App)时遇到问题。
我有一个 FlipView,它包含 2 到 5 个项目。项目是我自己的用户控件 - 滚动查看器中的网格。 当当前选定的 FlipView 项目滚动位置已更改时,我需要更改所有 FlipView 项目的滚动位置。
在我的用户控件中,我使用事件:
private void MyScrollViewer_ViewChanged(object sender, ScrollViewerViewChangedEventArgs e)
{
_myPage.ChangeFlipViewItemsScrollPosition(MyScrollViewer.VerticalOffset);
}
在我的页面中我使用方法:
public void ChangeFlipViewItemsScrollPosition(double verticalOffset)
{
for (int i = 0; i < MyFlipView.Items.Count; i++)
{
MyUserControl item = MyFlipView.Items[i] as MyUserControl;
if (item != null && i != MyFlipView.SelectedIndex)
{
item.MyScrollViewer.ChangeView(null, verticalOffset, null);
}
}
}
问题是:
例如,我在 FlipView 中有 5 个项目。
当 FlipView 选择索引为:
0 然后它将滚动位置更改为索引为 1 和 2 的项目;
1 然后它将滚动位置更改为索引为 0 和 2 的项目;
2 然后它将滚动位置更改为索引为 0、1 和 3 的项目;
3 然后它将滚动位置更改为索引为 2 和 4 的项目;
4 然后它将滚动位置更改为索引为 3 的项目;
我不知道为什么会这样。有人可以帮忙吗?
【问题讨论】:
-
FlipView 中的 ItemsPanel 是什么?这可能与虚拟化有关吗?在
if内的第一行放一个断点,看看其他项是什么类型。 -
@Márton Molnár Tnx 你的评论...我刚刚意识到我需要从 Stack 面板中删除虚拟化,然后一切正常。
标签: c# windows-store-apps scrollviewer flipview scroll-position