我想知道当WPF绑定到对象时是否有办法调用方法或更新ViewModel对象的属性?
我想这样做的原因是,当我的viewModel对象被创建时,他们的数据模型只包含一个ID,用于在必要时从数据库中查询数据。因此,当用户导航到该对象时,我希望视图通知ViewModel对象它正在被监视,结果告诉数据模型从DB更新其值并将我的ViewModel对象置于加载状态
如果ViewModel对象知道在屏幕上显示时自动更新它们,我可以避免手动刷新所有对象。
谢谢!
答案 0 :(得分:2)
当WPF绑定到ViewModel中的对象时,它将使用属性getter来获取值。
听起来你正在尝试使用延迟评估 - 只需让getter懒惰地实例化来自数据库的信息:
private int entityId; // Set in advance
private Entity entityToFetch; // Will be fetched lazily
public Entity EntityToFetch
{
get
{
if (this.entityToFetch == null) // || this.entityToFetch.Id != this.entityId) - add this if you're letting this change at runtime...
{
this.entityToFetch = DataAccessLayer.FetchEntityForId(this.entityId);
}
return this.entityToFetch;
}
}
答案 1 :(得分:0)
您可以向ViewModel添加Selected属性,该属性在选择对象时设置。当Selected变为true时,您可以启动数据库。