我在 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?
最佳答案
如果 Events
是 ObservableCollection
,则当您将其设置为 ui 的新值时,必须为该属性引发 NotifyProperty
像任何其他属性一样根据新值进行更新。
ObservableCollection
当您修改集合(即添加或删除元素)时自动更新 ui,但当您替换整个集合时,您不修改集合,而是修改 View 模型的属性。
关于listview - Obseravable Collection 在更改时不更新 ListView UI(Xamarin Forms 的 Prism),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41768979/