【发布时间】:2013-03-25 23:24:08
【问题描述】:
作为 WPF 的新手,我最近开始了我的 MVVM 之旅。我可以理解为什么我们需要 MVVM 的原始意图,但是一些实现细节仍然让我很困惑。
这是我的一个问题:
我应该如何通过ViewModel将model中的属性导出到View
我可以在这里展示我的一些想法,所以请与我分享你的观点。
这是我的一个实现:
class MyModel : INotifyPropertyChanged
{
private String _name;
public String Name
{
get { return _name; }
set
{
if (_name != value)
{
_name = value;
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs("Name"));
}
}
}
}
public event PropertyChangedEventHandler PropertyChanged;
}
class MyViewModel
{
private MyModel _model;
public MyModel Model
{
get { return _model; }
set { _model = value; }
}
}
我认为问题在于我们没有将视图与模型分离。并且视图需要知道模型实现的每一个细节来完成绑定过程。在我看来,将Model 直接 中的属性导出以从ViewModel 查看不能被视为一个好的设计。
所以我希望你能分享你关于这个主题的设计经验。
顺便说一句,
如果我们从视图模型中导出许多对象,例如 List 或 MyModel 对象以查看,我该如何实现这一点以将视图与模型解耦?
【问题讨论】:
-
视图不需要知道模型实现的每一个细节,视图只需要知道要绑定的属性的名称。在您的情况下,这将是 Name 属性。如果您有某种方法来格式化此名称,从数据库中检索此名称等。这将在您的 Model/ViewModel 类中,并且视图根本不需要知道任何这些 => 解耦。
标签: wpf design-patterns mvvm viewmodel