我试图在Page构造函数和OnNavigatedTo中调用ListView.ScrollIntoView(使用Dispatcher来编组线程),但在这两种情况下都没有效果。但是,如果我在用户点击AppBarButton时调用它,它就能完美运行。
我已经读过ListView构建它的Visual模型异步,这就是原因,因为模型尚未构建。但是,我无法在List Store的Windows应用商店版本中找到要订阅的建议事件。我试图用不同的时间间隔用计时器调用ScrollIntoView,但都失败了。
这样做的正确方法是什么?
答案 0 :(得分:1)
处理ListView.ContainerContentChanging
事件。
void lv_ContainerContentChanging(ListViewBase sender, ContainerContentChangingEventArgs args)
{
YourItem item = args.Item as YourItem;
if (item != null)
{
if (item == TheItemYouWant)
{
ListView lv = sender as ListView;
lv.ScrollIntoView(args.Item);
}
}
}
我不喜欢添加计时器,但这将作为最后的手段。
private void ListViewLoaded(object sender, RoutedEventArgs e)
{
var lv = sender as ListView;
DispatcherTimer dt = new DispatcherTimer();
dt.Interval = TimeSpan.FromSeconds(2);
dt.Tick += (o, o1) =>
{
dt.Stop();
lv.ScrollIntoView(lv.Items[50]);
};
dt.Start();
}