抱歉,如果标题令人困惑,但我真的不知道如何缩短我的问题。不管怎样,就这样吧。
我正在使用 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/