请考虑以下问题:
我使用ViewModels和XAML绑定具有一个Xamarin Forms项目。我有一个特定的listView,该视图绑定到特定对象的观测值。
这些对象包含所有必需的信息以显示以下按钮列表:
<ListView ItemsSource="{Binding ListViewItems}" Margin="0,20,0,0" RowHeight="130" SeparatorVisibility="None" VerticalOptions="FillAndExpand" Grid.Column="1" Grid.Row ="0" >
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<Button Command="{Binding HeatClickedCommand}" Margin="5,10,5,10" HorizontalOptions ="FillAndExpand" BackgroundColor="{Binding color_hex}" Grid.Column="1" TextColor="{StaticResource LightTextColor}" FontSize="Medium" Text="{Binding heat_title}"></Button>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
页面首次加载时,colour_hex
将根据特定的应用程序状态和有关对象的信息设置为绿色,灰色或红色。首先显示列表时,所有适合屏幕上的按钮似乎都正确显示,但是末尾的按钮似乎不可显示(最后4个应该亮了颜色,应该为灰色(。
然而,奇怪的是,如果某些按钮是绿色的,则迅速上下滚动似乎更改 将哪些按钮随机设置为绿色。
例如,说按钮1和2和红色,但是3是绿色的,如果我向下滚动以说15,然后迅速返回顶部,它可能已经改变,以便2现在是绿色和3个红色。
这似乎仅在Android(电话和平板电脑(上发生,但是我还没有在各种各样的设备上测试过,无法得出结论。我只知道它不会在Windows上发生。
检查调试看起来似乎没有任何颜色更改功能或属性换函数在发生这种情况时触发,看起来像某种内存问题。
对此的任何建议将不胜感激。
可以查看ListView.CachingStrategy
属性及其作用。那可能是引起这一点的原因。
此设置确定了如何重复使用细胞。如果设置为错误的值(对于您的用例(可能会导致一些奇怪的行为。
更多信息可以在文档中找到:https://developer.xamarin.com/api/type/xamarin.forms.listviewcachingstrategy/