我想知道当WPF绑定到对象时是否有办法调用方法或更新ViewModel对象的属性?

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

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

谢谢!

有帮助吗?

解决方案

当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;
    }
}

其他提示

您可以向ViewModel添加Selected属性,该属性在选择对象时设置。当Selected变为true时,您可以启动数据库。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top