绑定ObservableCollection需要花费很多时间,实际上窗口需要花费很多时间来显示
本文关键字:时间 显示 窗口 绑定 ObservableCollection 实际上 | 更新日期: 2023-09-27 18:15:10
我正在使用MVVM light框架与WPF,我有一个DataGrid,包含从我的SQLite数据库加载的所有客户,但是它需要太多的时间来显示窗口,所以如果有人可以帮助我,我可以显示窗口和加载DataGrid分别。我认为由于数据网格绑定,窗口正在花费时间。
public ObservableCollection<CustumerModel> customerList
{
get
{
_customerList = new ObservableCollection<CustumerModel>();
IList<CustumerModel> listCustomer = RemplireListCustomer();
_customerList = new ObservableCollection<CustumerModel>(listCustomer);
return _customerList;
}
方法RemplireListCustomer
private IList<CustumerModel> RemplireListCustomer()
{
IList<CustumerModel> listCustomer = new List<CustumerModel>();
foreach (var c in _customerService.GetAllCustomers())
{
listCustomer.Add((CustumerModel)c);
}
return listCustomer;
}
你可以通过在类的构造函数中启动一个新的Task
来异步加载你的数据。
public class YourClass
{
public YourClass()
{
TaskEx.Run(() =>
{
var listCustomer = RemplireListCustomer();
CustomerList = new ObservableCollection<CustumerModel>(listCustomer);
});
}
public ObservableCollection<CustumerModel> CustomerList { get; private set; }
}
也许您不必使用foreach
遍历服务返回的所有客户,只需返回_customerService.GetAllCustomers()
集合?