绑定 ObservableCollection 需要很多时间,实际上 window 需要很多时间才能显示
Binding ObservableCollection take much time in fact the window take much time to be displayed
我正在使用 MVVM light 框架和 WPF 并且我有一个 DataGrid包含从我的 SQLite 数据库加载的所有客户,但是显示 Window 需要太多时间,所以如果有人可以帮助我,我可以支付 window 并加载 DataGrid separately.I认为 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;
}
您可以通过启动一个新的 Task
来异步加载您的数据,例如你的 class' 构造函数。
public class YourClass
{
public YourClass()
{
TaskEx.Run(() =>
{
var listCustomer = RemplireListCustomer();
CustomerList = new ObservableCollection<CustumerModel>(listCustomer);
});
}
public ObservableCollection<CustumerModel> CustomerList { get; private set; }
}
也许您不必使用 foreach
遍历您的服务 return 提供的所有客户,只需 return 集合 _customerService.GetAllCustomers()
?
我正在使用 MVVM light 框架和 WPF 并且我有一个 DataGrid包含从我的 SQLite 数据库加载的所有客户,但是显示 Window 需要太多时间,所以如果有人可以帮助我,我可以支付 window 并加载 DataGrid separately.I认为 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;
}
您可以通过启动一个新的 Task
来异步加载您的数据,例如你的 class' 构造函数。
public class YourClass
{
public YourClass()
{
TaskEx.Run(() =>
{
var listCustomer = RemplireListCustomer();
CustomerList = new ObservableCollection<CustumerModel>(listCustomer);
});
}
public ObservableCollection<CustumerModel> CustomerList { get; private set; }
}
也许您不必使用 foreach
遍历您的服务 return 提供的所有客户,只需 return 集合 _customerService.GetAllCustomers()
?