Xamarin.Form的问题(从Akavache缓存绑定ListView不刷新)

Problem of Xamarin.Form (ListView not refresh if binding from Akavache cache)

我遇到了刷新列表的问题。

我在 Visual Studio 2019 (Xamarin.Forms 4.3.0.991250) & Akavache 6.6.1 中使用 MasterDetailPage 初始化默认值,有一个变量是 [=13 类型的项目=].

首先,我添加了一个项目到缓存(我称这个对象为 TodoItem)。然后显示带有从 Akavache 缓存获取的项目绑定的 ListView,但它不起作用,项目有值 -> ListView 不刷新。

我尝试了一些东西:

为了更改 UI 的变量绑定端,您必须在 BeginInvokeOnMainThread

中进行

像这样:

private async Task AddNewExecute()
{
     var key = Guid.NewGuid().ToString().Substring(0, 5);
     await BlobCache.LocalMachine.InsertObject<TodoItem>(key, new TodoItem() 
        {
          Id=key.Substring(0,2),Text="abc",Description="def" }, new TimeSpan(1, 0, 0));
          Device.BeginInvokeOnMainThread (async () => {
          var list = await BlobCache.LocalMachine.GetAllObjects<TodoItem>();
          Items = new ObservableCollection<TodoItem>(list);
        });
}

通过这种方式,您将更改 UI 线程上的变量