在nikhilk Kothary的BookClub示例应用程序中,组合框用于显示图书类别。
在viewmodel类中是这样的(应用程序正在使用MVVM模式):
private ReferenceDataContext _referenceData;
public BookClubModel(){//构造函数 _referenceData = new ReferenceDataContext();
_referenceData.Load(_referenceData.GetcategoriesQuery(), false);
}
然后有一个comboxbox绑定的属性:
public IEnumerable Categories { 得到{ return _referenceData.Categories; } }
为什么这样有效?我们不应该为加载操作设置一个“已完成”的事件处理程序吗?
如果我想在构造函数中填充IEnumerable属性,那么它不起作用:
private ReferenceDataContext _referenceData;
私人IEnumerable _categories;
public BookClubModel(){//构造函数 _referenceData = new ReferenceDataContext();
_referenceData.Load(_referenceData.GetcategoriesQuery(), false);
_categories = _referenceData.Categories; _referenceData.Categories was what we were returning in the Categories property above.
}
为什么它适用于一个案例而不适用于另一个案例?
丹尼尔
答案 0 :(得分:1)
在第一种情况下Categories
引用_referenceData.Categories
。当_referenceData.Categories
集合更新后,Categories
也会更新。
在第二种情况下,您需要Load
操作的事件处理程序,然后使用加载的实体执行您想要的操作。
在内部调用Load时,对数据库的查询正在执行,并且在获取结果时会调用load operation callback。加载操作是异步操作,你需要记住这个事实