Listview的CachingStrategy="RetainElement"

ListView的 CachingStrategy 缓存策略有3种模式。

RecycleElement  1   
指示不需要的单元格的绑定上下文将更新至所需单元格的绑定上下文。
RecycleElementAndDataTemplate   3   
指示数据模板类型不仅缓存 RecycleElement 指定的行为,也缓存 DataTemplateSelector 所选择的 DataTemplate 对象。
RetainElement   0   
指示对于列表视图 ItemsSource 属性中的每个项目,都将通过 DataTemplate 构造一个唯一元素。

因为我的listview绑定了好几组不同数据来回切换,有时候感觉项目的状态残留着上一组的状态。没有完全清空。没有耐心查找,我的代码问题了。就查了下CachingStrategy 缓存策略。原来用的是 RecycleElement ,我改成了RetainElement,之后这种残留就没有了。应该是xamarin内部问题?

                                <ListView HorizontalOptions="Start" ItemsSource="{Binding Records}" VerticalOptions="End"
                                                      HasUnevenRows="true"
                                                     
                                                      CachingStrategy="RetainElement"
                                                      SeparatorVisibility ="Default"
                                                      BindingContextChanged="runstatus1_change"
                                                              SelectionMode="None"
                                                     >
                                            <ListView.ItemTemplate >
                                                <DataTemplate>

                                                    <ViewCell>
                                                        <StackLayout HeightRequest="30" IsClippedToBounds="{Binding show}" Padding="10,2,10,2" Orientation="Horizontal" HorizontalOptions="FillAndExpand">
                                                            <StackLayout  Orientation="Horizontal" >
                                                                <Label TextColor="White" Text="{Binding Title}" LineBreakMode="NoWrap" Style="{DynamicResource ListItemTextStyle}" />
                                                                <Label TextColor="White"  Text=":" LineBreakMode="NoWrap" Style="{DynamicResource ListItemDetailTextStyle}" />
                                                            </StackLayout>
                                                            <StackLayout Orientation="Horizontal" HorizontalOptions="EndAndExpand"  VerticalOptions="End" >
                                                                <Label TextColor="White"  Text="{Binding value}" LineBreakMode="NoWrap" Style="{DynamicResource ListItemTextStyle}" />
                                                                <Label TextColor="White"  Text="{Binding dw}" LineBreakMode="NoWrap" Style="{DynamicResource ListItemTextStyle}" />
                                                            </StackLayout>
                                                        </StackLayout>
                                                    </ViewCell>
                                                </DataTemplate>
                                            </ListView.ItemTemplate>
                                        </ListView>
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,148评论 1 32
  • ListView用来显示列表数据,适合单一类型数据集合。 ListView属性 Footer :object类型,...
    MayueCif阅读 12,659评论 4 10
  • 简介 在Android开发中ListView是比较常用的组件。 以列表的形式展示具体内容。 并且能够根据数据的长度...
    上善若水Ryder阅读 7,010评论 2 5
  • 7.1 压缩图片 一、基础知识 1、图片的格式 jpg:最常见的图片格式。色彩还原度比较好,可以支持适当压缩后保持...
    AndroidMaster阅读 2,581评论 0 13
  • 1. 简介 1.1 什么是 MyBatis ? MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的...
    笨鸟慢飞阅读 5,680评论 0 4