0

我想知道当 WPF 绑定到对象时,是否有一种方法可以调用 ViewModel 对象上的方法或更新属性?

我想这样做的原因是,当我的 viewModel 对象被创建时,它们的数据模型只包含一个 ID,用于在必要时从数据库中查询数据。因此,当用户导航到该对象时,我希望视图通知 ViewModel 对象它正在被监视,并因此告诉数据模型从 DB 更新其值并将我的 ViewModel 对象置于加载状态

如果 ViewModel 对象知道当它们显示在屏幕上时会自行更新它们,我可以避免手动刷新所有对象。

谢谢!

4

2 回答 2

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;
    }
}
于 2009-10-22T20:48:14.513 回答
0

您可以向 ViewModel 添加一个 Selected 属性,该属性在对象被选中时设置。当 Selected 变为 true 时,您可以访问数据库。

于 2009-10-22T20:20:39.717 回答