c# - FlowListView 不使用 Observable 更新 Ui
问题描述
我似乎无法使用定时方法和可观察集合来更新我的流程列表
所以我从定时器开始
protected async override void OnAppearing()
{
MakeWebRequest();
if (IsConnected)
{//10 Seconds for Testing
Device.StartTimer(TimeSpan.FromSeconds(10), () =>
{
Task.Run(async () =>
{//This does Fire everytime
await InitAsync();
});
return true;
});
}
else
{
await Navigation.PushAsync(new ErrorView());
}
}
这是清单
public class Flashlist : INotifyPropertyChanged
{
private ObservableCollection<Product> _items;
public Flashlist(List<Product> itemList)
{
Items = new ObservableCollection<Product>();
if (itemList == null) return;
foreach (var itm in itemList)
Items.Add(itm);
}
public ObservableCollection<Product> Items
{
get => _items;
private set
{
_items = value;
OnPropertyChanged("Items");
}
}
public event PropertyChangedEventHandler PropertyChanged;
private void OnPropertyChanged(string propertyName)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}
该方法应该进行 API 调用然后设置 Listview
private async Task InitAsync()
{
try
{
var rest = new RestAPI("http://Site/wp-json/wc/v3/",
"xxxxxxxxx", "xxxxxxx");
var wc = new WCObject(rest);
var product = await wc.Product.GetAll(new Dictionary<string, string>
{
{"tag", "1486"},
{"per_page", "80"}
});
if (product != null)
{
_items = new Flashlist(product);
}
else
{
_items.Items.Clear();
}
productsListView.FlowItemsSource = _items.Items.Where(z => z.status == "publish").ToList();
}
catch (Exception ex)
{
Crashes.TrackError(ex);
Analytics.TrackEvent(ex.ToString());
}
}
列表更新很好如果我去后端删除/添加产品但用户界面仍然保持不变产品要么保持要么永远不会出现我在其他视图上具有相同的实现并且它工作正常,这是唯一的页面有一个计时器所以我很好奇是否有人有一些想法?
解决方案
试试这个:
Device.BeginInvokeOnMainThread (() => {
productsListView.FlowItemsSource = _items.Items.Where(z => z.status == "publish").ToList();
});
它将强制它在主线程上更新。
推荐阅读
- javascript - momentjs 在浏览器中返回的结果与在 karma 单元测试中不同
- android - 方法 rawQuery 无法解析
- three.js - 在按钮单击中将对象居中
- android - 如何以编程方式在应用程序图标上设置徽章?
- firebase - 链接后,Bigquery 未使用 firebase 中存在的 firestore 数据库进行更新
- r - R中的随机游走
- c# - 如何通过使用 Angular 作为前端并将文件通过 api 传递到 api 控制器从 C# 代码上传文件到 azure
- sql - 查询 Big Query 重复模式
- dynamics-crm - 如何获得 Dynamics 365CE 个人开发环境?
- kubernetes - HPA 无法从 prometheus 适配器获取自定义指标