ObservableCollection 在 .NET MAUI 中刷新后不更新 UI

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

我正在开发一个 .NET MAUI 应用程序,其中有一个 ClientReviewsViewModel,它使用 ObservableCollection 来显示评论列表。评论显示在 CollectionView 中,我使用 RefreshView 刷新数据。我面临的问题是,虽然数据在页面最初加载时完美加载,但在刷新数据后却不会出现。

这是我的 XAML 布局的片段:

<ActivityIndicator
    Grid.Row="0"
    IsRunning="{Binding IsBusy}"
    IsVisible="{Binding IsBusy}"
    HorizontalOptions="Center"
    VerticalOptions="Center"
    Color="{StaticResource Primary}"/>

<RefreshView
    Grid.Row="0"
    Command="{Binding LoadClientReviewsCommand}"
    IsRefreshing="{Binding IsRefreshing}"
    IsEnabled="True"
    IsVisible="{Binding IsRefreshing, Converter={StaticResource InverseBooleanConverter}}">

    <ScrollView VerticalScrollBarVisibility="Never">
        <Grid>
            <CollectionView ItemsSource="{Binding ReviewsList}"
                            Margin="0,15,0,0">
                <!-- CollectionView ItemTemplate here -->
            </CollectionView>
        </Grid>
    </ScrollView>
</RefreshView>

这是我的 ClientReviewsViewModel 的一部分:

public partial class ClientReviewsViewModel : BaseViewModel
{
    public ObservableCollection<ReviewViewModel> ReviewsList { get; set; }
    public UserProfileViewModel ProfileUser { get; set; }
    public string UserId;
    private RoutingService routingService;
    private Repo repo;

    public ClientReviewsViewModel(Repo repo, RoutingService routingService)
    {
        this.repo = repo;
        this.routingService = routingService;
        ReviewsList = new ObservableCollection<ReviewViewModel>();
        ProfileUser = new UserProfileViewModel();
        IndicatorTitle = "Reviews";
    }

    private void PopulateReviewsList(UserProfileViewModel profileUser)
    {
        ReviewsList.Clear();
        if (profileUser.Reviews?.Any() == true)
        {
            foreach (var review in profileUser.Reviews)
            {
                ReviewsList.Add(review);
            }
        }
    }

    [RelayCommand]
    private async Task LoadClientReviews()
    {
        IsBusy = true;
        try
        {
            PopulateReviewsList(ProfileUser);
            LastRefreshed = DateTime.Now;
        }
        catch (Exception ex)
        {
            await Dialogs.Toast(ex.Message);
        }
        finally
        {
            IsRefreshing = false;
            IsBusy = false;
        }
    }
}

问题: 当我调用 LoadClientReviews 时,ReviewsList 被清除并重新填充,但 UI 没有任何反应。

问题: 为什么 ObservableCollection 刷新后不更新 UI? 我需要检查或实施什么来确保 UI 反映对 ObservableCollection 所做的更改吗? 任何帮助将不胜感激!谢谢!

.net maui observablecollection collectionview
1个回答
© www.soinside.com 2019 - 2024. All rights reserved.