在Xamarin Forms ListView中停止单元回收

时间:2016-01-04 07:19:34

标签: listview xamarin xamarin.forms

我在xamarin表单中有一个相对简单的应用程序,它有一个带有自定义单元格的ListView。在这些单元格中,有一个图像。我遇到的问题是这个。当我滚动ListView时,我可以在加载新图像之前看到前一个单元格中的图像片刻。

我尝试将ListView的ListViewCachingStrategy设置为所有可能的值,但问题仍然存在。

有没有办法阻止回收?我知道这是一个性能打击,但列表并不那么大。当然,除非有更好的方法来阻止这种图像问题

3 个答案:

答案 0 :(得分:2)

您可以使用绑定覆盖OnBindingContextChanged ViewCell的方法。这样的事情:

protected override void OnBindingContextChanged()
{
    image.Source = null;

    base.OnBindingContextChanged();

    var item = BindingContext as YourItemType;

    if (item == null)
        return;

    image.Source = item.YourImageSource;
}

在此处阅读更多内容:https://developer.xamarin.com/guides/xamarin-forms/user-interface/listview/performance/#RecycleElement

答案 1 :(得分:1)

我还没有明确地尝试过这个,但如果你附加了ListView上的ItemDisappearing事件。

然后获取e.Item并清除图像,以便它应该用单独的空格更新单元格中的图像。

然后当它再次回到视图中时,在加载新内容之前它应该是空白的。

答案 2 :(得分:0)

我们对这个问题所做的是将绑定图像设置为空值,同时用户滚动此图像以使图像再次渲染,这不是一个好的解决方案,但它可以正常工作。