所以最后,我感到我已经从这么长时间寻找LongListSelector的ViewportControl但是当我试图滚动到一个特定的使用下面的方法偏移,我不能滚动到偏移。 我使用的是公共静态类GlobalVars
(全局变量)来传递页面之间的数据。
因此,当用户选择一个item
从LongListSelector - >导航到ItemDetail页由这样的:
private void llsArtists_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
GetFirstVisibleItem(llsArtists);
var artist = (Artist)e.AddedItems[0];
GlobalVars._artistName = artist.ArtistName;
GetSelectedArtist(artist.ArtistName);
NavigationService.Navigate(new Uri("/ArtistDetail.xaml", UriKind.Relative));
}
然后打回来到同一页面Back
键,我想用户在同一个项目的最后一个。因此,我得到的视口和垂直偏移(目前跳到第一个索引。):
private void GetFirstVisibleItem(LongListSelector lls)
{
var offset = FindViewport(lls).Viewport.Top;
GlobalVars._artistScrollOffset = offset;
}
private static ViewportControl FindViewport(DependencyObject parent)
{
var childCount = VisualTreeHelper.GetChildrenCount(parent);
for (var i = 0; i < childCount; i++)
{
var elt = VisualTreeHelper.GetChild(parent, i);
if (elt is ViewportControl)
return (ViewportControl)elt;
var result = FindViewport(elt);
if (result != null)
return result;
}
return null;
}
最后ScrollToOffset
void ScrollToOffset()
{
Point loc = new Point();
loc.X = 0;
//loc.Y = Math.Round(GlobalVars._artistScrollOffset, 2);
loc.Y = GlobalVars._artistScrollOffset;
FindViewport(llsArtists).SetViewportOrigin(loc);
}
问题是-如果我明确设置Y值的Point
禄像我设置loc.X = 0
,它只是正常工作! 该LongListSelector完美的作品! 但是,如果我想它是一个变量,这正是我想它是 - 它只是不工作! 我觉得这很奇怪吗? 可能是什么造成的? 任何帮助,将不胜感激!