Xamarin.forms 列出滚动出屏幕时移动或消失的项目

Xamarin.forms 列出滚动出屏幕时移动或消失的项目,xamarin.forms,xamarin.forms.labs,Xamarin.forms,Xamarin.forms.labs,我有一个针对Android和IOS的Xamarin表单应用程序。当我在Android上打开一个较大的列表时,它在加载时看起来很好。然而,当我现在向下滚动并再次向上滚动某些条目时,图像会被移动或完全消失 之前: 之后: 该列表是使用以下XAML定义的: <ListView x:Name="PaymentList" ItemsSource="{Binding DailyList}"

我有一个针对Android和IOS的Xamarin表单应用程序。当我在Android上打开一个较大的列表时,它在加载时看起来很好。然而,当我现在向下滚动并再次向上滚动某些条目时,图像会被移动或完全消失

之前:

之后:

该列表是使用以下XAML定义的:

            <ListView x:Name="PaymentList"
                      ItemsSource="{Binding DailyList}"
                      HasUnevenRows="True"
                      CachingStrategy="RecycleElementAndDataTemplate"
                      IsGroupingEnabled="True"
                      SeparatorVisibility="None">

                <ListView.GroupHeaderTemplate>
                    <DataTemplate>
                        <TextCell Text="{Binding Key}"
                                  TextColor="{DynamicResource HeaderColor}" />
                    </DataTemplate>
                </ListView.GroupHeaderTemplate>

                <ListView.ItemTemplate>
                    <DataTemplate>
                        <ViewCell>
                            <ViewCell.ContextActions>
                                <MenuItem Clicked="EditPayment" CommandParameter="{Binding .}"
                                          Text="{Binding Resources[EditLabel]}" />
                                <MenuItem Clicked="DeletePayment" CommandParameter="{Binding .}"
                                          Text="{Binding Resources[DeleteLabel]}"
                                          IsDestructive="True" />
                            </ViewCell.ContextActions>
                            <controls:CardView Margin="{StaticResource SmallLeftRightBottomMargin}" Style="{StaticResource ListItemStyle}">
                                <StackLayout Spacing="0"
                                             Margin="{StaticResource DefaultListItemsMargin}">
                                    <Grid>

                                        <Grid.ColumnDefinitions>
                                            <ColumnDefinition Width="70*" />
                                            <ColumnDefinition Width="30*" />
                                        </Grid.ColumnDefinitions>

                                        <Label Grid.Column="0"
                                               Text="{Binding Category.Name}"
                                               Style="{StaticResource ListItemHeaderSmallStyle}" />

                                        <Label Grid.Column="1"
                                               HorizontalTextAlignment="End"
                                               VerticalOptions="CenterAndExpand"
                                               Style="{StaticResource SmallTextStyle}"
                                               Text="{Binding ., Converter={StaticResource PaymentAmountConverter}}" />
                                    </Grid>
                                    <Grid >

                                        <Grid.ColumnDefinitions>
                                            <ColumnDefinition Width="70*" />
                                            <ColumnDefinition Width="30*" />
                                        </Grid.ColumnDefinitions>

                                        <Label Grid.Column="0"
                                           Text="{Binding Note}" 
                                           Style="{StaticResource DeemphasizedSmallLabelStyle}" />

                                        <StackLayout Grid.Column="1" Orientation="Horizontal" HorizontalOptions="EndAndExpand">

                                            <Image HeightRequest="15"
                                                   WidthRequest="15"
                                                   IsVisible="{Binding IsTransfer}" >
                                                <Image.Source>
                                                    <FontImageSource
                                                        Glyph="{StaticResource Transfer}"
                                                        FontFamily="{DynamicResource MaterialFontFamily}"
                                                        Color="{DynamicResource PrimaryFontColor}" />
                                                </Image.Source>
                                            </Image>

                                            <Image HeightRequest="15"
                                                   WidthRequest="15"
                                                   IsVisible="{Binding IsRecurring}" >
                                                <Image.Source>
                                                    <FontImageSource
                                                        Glyph="{StaticResource Recurring}"
                                                        FontFamily="{DynamicResource MaterialFontFamily}"
                                                        Color="{DynamicResource PrimaryFontColor}" />
                                                </Image.Source>
                                            </Image>

                                            <Image HeightRequest="15"
                                                   WidthRequest="15"
                                                   IsVisible="{Binding IsCleared}">
                                                <Image.Source>
                                                    <FontImageSource
                                                        Glyph="{StaticResource Cleared}"
                                                        FontFamily="{DynamicResource MaterialFontFamily}"
                                                        Color="{DynamicResource PrimaryFontColor}" />
                                                </Image.Source>
                                            </Image>

                                        </StackLayout>
                                    </Grid>
                                </StackLayout>
                            </controls:CardView>
                        </ViewCell>
                    </DataTemplate>
                </ListView.ItemTemplate>
            </ListView>

我还尝试了另一种缓存模式。但是使用retain元素,滚动时的元素只是空的

这份清单大约有130个项目


我怎样才能解决这个问题

我建议您可以使用FFImageLoading正确渲染图像,我想FFImageLoading将解决您的问题

通过NuGet软件包安装Xamarin.FFImageLoading.Forms

以下是有关使用FFimageLoading的详细信息


我建议您可以使用FFImageLoading正确渲染图像,我想FFImageLoading将解决您的问题

通过NuGet软件包安装Xamarin.FFImageLoading.Forms

以下是有关使用FFimageLoading的详细信息


我注意到,当我将
hassunlotrows=“True”
更改为False(默认值)并设置固定行高时,我可以使用
CachingStrategy=“RetainElement”
而不必使用emtpy元素。这样,问题似乎不再出现。

我注意到,当我将
hassunterrows=“True”
更改为False(默认值)并设置固定行高时,我可以使用
CachingStrategy=“RetainElement”
而不使用emtpy元素。这样,问题似乎不再出现。

谢谢您的回答!我试过了。不幸的是,这种情况更糟^^谢谢你的回答!我试过了。不幸的是,这种情况更糟^^我尝试但不起作用用CachingStrategy=“RecycleElement”替换CachingStrategy=“RetainElement”时,它起作用。我尝试但不起作用用CachingStrategy=“RecycleElement”替换CachingStrategy=“RetainElement”时,它起作用