我使用 MVVM light 框架与 WPF ,我有一个 DataGrid ,其中包含从我的SQLite数据库加载的所有客户,但是显示窗口需要太多时间,所以如果有人可以帮助我,我可以分开窗口并单独加载DataGrid。我认为Window因为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;
}
答案 0 :(得分:1)
您可以通过启动新的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()
?