使用 RemainingItemsCommand 增量加载数据 Collectionview MAUI

问题描述 投票:0回答:2

我有一个带有 CollectionView 的页面并且工作正常,但目前,我正在尝试实现 RemainingItemsThresholdReachedCommand 但没有成功。问题是,即使不滚动集合,该命令也会持续触发,而且,启用该命令时,集合的滚动会变得非常滞后。

集合位于 Grid 内,而 Grid 位于 Scrollview 内,如下所示:

<Scrollview>
  <Grid>
    <CollectionView>
    </CollectionView>
  </Grid>
</Scrollview>

这是我的代码。

XAML

  <CollectionView Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="2" ItemsSource="{Binding Messages}" SelectionMode="None" BackgroundColor="{AppThemeBinding Dark=Black,Light=White}" RemainingItemsThreshold="0" RemainingItemsThresholdReachedCommand="{Binding RemainingItemsCommand}">
        <CollectionView.ItemTemplate>
             <DataTemplate x:DataType="models:MessagesMessages">

             </DataTemplate>
         </CollectionView.ItemTemplate>

视图模型

public partial class MessagesPageViewModel : ObservableObject
{
   public ObservableCollection<MessagesMessages> Messages { get; set; } = new();

    [RelayCommand]
    private void RemainingItems()
    {
        LoadMessages();
    }
   public MessagesPageViewModel(IApiService apiService)
    {
       apiService = apiService;
       LoadMessages();
    }

   private async void LoadMessages()
   {
      Messages.Add(...)
   }
}

我尝试将 RemainingItemsThreshold 值更改为每个数字,但它无法按预期工作。我正在从 API 中以 10 条消息的包形式检索数据,第一次加载填满整个屏幕,但如果不滚动,命令会继续触发。

maui collectionview
2个回答
0
投票

不建议将垂直滚动的 CollectionView 包装在垂直滚动的 ScrollView 中。 CollectionViews 有自己的内置滚动功能,因此您不必将其放入 ScrollView 中。否则,会导致很多滚动问题。如果你还想把它放在滚动视图中,尝试设置CollectionView的HeightRequest。

更多信息可以参考:CollectionView需要ScrollView #8097如何在 ScrollView 中使用 CollectionView


0
投票

微软, 您找到解决方案了吗?因为我现在也面临着同样的问题!

© www.soinside.com 2019 - 2024. All rights reserved.