ListView ScrollTo在UWP上没有延迟

时间:2017-04-03 08:20:37

标签: c# listview xamarin uwp xamarin.forms

我在ListView is not scrolling with grouping问题上展示了一个简单的ListView

我的问题是,在UWP上,我需要在Windows Phone上插入await Task.Delay(1500),在Windows桌面上插入200ms
我没有给ListView填充大量数据,所以我也想知道,当用户运行它时会发生什么,因为它们可能有很多数据。

但为什么我需要它,因为对我来说这似乎是一个错误的代码?

我在没有Task.Delay的情况下获得的例外是Error HRESULT E_FAIL has been returned from a call to a COM component.

消息是

System.Runtime.InteropServices.COMException: Error HRESULT E_FAIL has been returned from a call to a COM component.
   at Windows.UI.Xaml.UIElement.Measure(Size availableSize)
   at Xamarin.Forms.Platform.UWP.VisualElementRenderer`2.MeasureOverride(Size availableSize)
   at Windows.UI.Xaml.UIElement.Measure(Size availableSize)
   at Xamarin.Forms.Platform.UWP.VisualElementRenderer`2.MeasureOverride(Size availableSize)
   at Windows.UI.Xaml.UIElement.Measure(Size availableSize)
   at Xamarin.Forms.Plat

如何修复此错误/错误代码?

更新
如果我设置HasUnevenRows = false它不会崩溃,但只会滚动到不正确的ViewCell。但我需要使用HasUnevenRows = true 如果我设置HasUnevenRows = false和RowHeight,则会出现同样的问题。

1 个答案:

答案 0 :(得分:0)

我的问题与您的问题相似,其中Task.Delay()使iOS上的滚动工作得以实现。原因是线程,其中滚动与其他“任务”不同步。从

Device.BeginInvokeOnMainThread(() =>
{
   listView.ScrollTo(defaultItem, ScrollToPosition.Center, true);
});

listView.ScrollTo(defaultItem, ScrollToPosition.Center, true);

我不再需要Task.Delay()了,现在可以滚动了。虽然我从来没有得到你的例外。