listview - Obseravable Collection 在更改时不更新 ListView UI(Xamarin Forms 的 Prism)

标签 listview data-binding xamarin.forms prism observablecollection

我在 Xamarin Forms 应用程序中使用 Prism。

我将可观察集合绑定(bind)到 ListView ,当我刷新数据时, View 模型集合会使用新数据进行更新,但 UI 不会更新。

经过一番研究,我发现该集合仅在添加或删除项目时更新。

public async Task RefeshEvents()
    {
        try
        {
            IsLoading = false;
            IsRefreshing = true;
            Events = await _eventService.GetEvents();
            IsRefreshing = false;
        }
        catch (Exception)
        {
            await
                _pageDialogService.DisplayAlertAsync("Connection Error",
                    "We could not Connect to the internet please check your connection", "Ok");
            IsRefreshing = false;
        }

    }

如您所见,我正在为集合分配一个新列表。

 private ObservableCollection<Event> _events;
    public ObservableCollection<Event> Events
    {
        get { return this._events; }
        set { SetProperty(ref _events, value); }
    }

有没有办法让我无需手动管理列表即可更新 UI?

最佳答案

如果 EventsObservableCollection,则当您将其设置为 ui 的新值时,必须为该属性引发 NotifyProperty像任何其他属性一样根据新值进行更新。

ObservableCollection 当您修改集合(即添加或删除元素)时自动更新 ui,但当您替换整个集合时,您不修改集合,而是修改 View 模型的属性。

关于listview - Obseravable Collection 在更改时不更新 ListView UI(Xamarin Forms 的 Prism),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41768979/

相关文章:

azure - 如何解决初始化 MobileServiceClient Xamarin.Forms 时出现的错误?

c# - 将 xamarin 表单与 IServiceProvider 一起使用

c# - 自 iOS 13 以来,推送通知不再适用于 Xamarin 应用程序

javascript - 用户控件内的 ASP ListView 。如何在用户控件完全加载后触发 JavaScript?

java - 在 ListView 项内绘制

c# - DataGrid ContextMenu MenuItems 有时被禁用

c# - SortDescription 和自动排序顺序刷新

c# - XAML 中的 WPF 文本 block 绑定(bind)

android - 自动更改ListView的背景图片

java - 从 ListView 中删除项目的麻烦