wpf - MVVM - 直接绑定(bind)到从 VM 公开的模型对象,或在 VM 中实现单独的属性来访问模型属性

标签 wpf entity-framework mvvm

抱歉,如果标题令人困惑,但我真的不知道如何缩短我的问题。不管怎样,就这样吧。

我正在使用 WPF、 Entity Framework 和 MVVM。

目前,在我的 ViewModel 中,我有一个属性

public Model.Document Document {get;set;} //Model.Document is an EF Entity

然后,在 XAML 中,我绑定(bind)到

<TextBox Text={Binding Path=Document.Title}/>

标题当然是模型上的一个属性。

现在我想到了以下问题: 为了将模型与 View 分离,如果我像这样向 ViewModel 添加一个属性不是更好

    public string Title
    {
        get { return Document.Title; }
        set { Document.Title = value; }
    }

然后像这样绑定(bind):

<TextBox Text={Binding Path=Title}/>

推荐哪种方式?

最佳答案

如果你看一下 How Data Binding References are Resolved ,您可以看到,在决定如何公开要绑定(bind)到的属性时,可能需要考虑性能问题。

Model.Document 是否实现 INotifyPropertyChanged界面?如果没有,我建议将 Title 属性添加到您的 View 模型中,并在您的 View 模型上实现 INotifyPropertyChanged,这样当标题更改时 PropertyChanged引发事件以通知 View 。

另一种方法是将 View 模型上的标题公开为 DependencyProperty因为绑定(bind)和渲染时间更快。

关于wpf - MVVM - 直接绑定(bind)到从 VM 公开的模型对象,或在 VM 中实现单独的属性来访问模型属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5806211/

相关文章:

c# - 如何使用 Entity Framework 插入 ntext?

c# - Ado.Net 实体 : Object doesn't display linked members (foreign keys)

c# - 多个 View 模型之间状态共享的具体例子(WPF MVVM)

c# - 我应该尝试从 View 中 "hide"模型和 View 模型吗?

c# - 在 MVVM 中实现临时覆盖的最佳方式

c# - 不支持关键字 : 'version'

c# - 如何禁用 WPF 动画

wpf - 在 Silverlight/WPF 按钮上设置 MouseOver 的样式

WPF Thumb DragDelta 在显示器之间移动

c# - 单元测试 - 更新模型