关于WPF mvvm的一些问题

1、MVVM中的model是不是就是业务逻辑层(需按领域建模吗?);2、看过网上很多的例子,有的是在Viewmodel层实现INotifyPropertyChanged;... 1、MVVM中的model是不是就是业务逻辑层(需按领域建模吗?);
2、看过网上很多的例子,有的是在Viewmodel层实现INotifyPropertyChanged;有的是在Model层实现这个接口,我知道Viewmodel层肯定要实现这个接口,不然没法驱动view层,如果说我Model层有一个Person类,它有很多属性,比如姓名,年龄,生日,性别等等,
一、如过我在Model层实现这个接口,那么我Viewmodel中可能这样写
public Person Person
{
get;
private set;
}
在和View绑定时,直接通过这个Person属性绑定,有说这样违背MVVM的初衷,View会和Model紧 耦合;
二、如果Model不实现INotifyPropertyChanged,那我需要在ViewModel中重新封装一个Model或者多个 Model的属性,这样是不是有些麻烦;
关于这两种方法,哪一种更好一点,或者说是两种结合起来用?????
展开
 我来答
阳光的雷咩咩
2013-12-14 · TA获得超过1.4万个赞
知道大有可为答主
回答量:2.3万
采纳率:66%
帮助的人:7856万
展开全部
  1. model应该是数据的表示,viewmodel才是业务逻辑

  2. 一般是在viewmodel层,大多数都使用了实现了此接口的viewmodelbase基类

  3. 如果你的程序很简单,那通常只需要viewmodel,不需要model层了。

  4. 如果model不实现(因为有时候model不在你的控制范围之内),只有在ViewModel中封装,而且需要使用哪些属性就要重新让其实现inpc接口,确实比较麻烦。

  5. 最后,MVVM只是指导原则,不是规定(MVVM is a set of guidelines, not rules.),并没有标准说一定要怎么写的

更多追问追答
追问
model只是单纯的数据吗,那它不包含业务规则吗?
追答
可以这么说吧。
RXC55555
2013-12-14 · TA获得超过135个赞
知道小有建树答主
回答量:121
采纳率:0%
帮助的人:117万
展开全部

可以以管理系统为例理解下。假如:

数据库中有一张表:Person 列:ID Name;

Model为

public class Person
{
    public string ID{get;set;}
    public string Name{get;set;}   
}

ViewModel则负责数据的读取和更新,实现INotifyPropertyChanged

public class ViewModel:INotifyPropertyChanged
{
   //实现省略
    private string _id;
    public string ID
   { 
        get{return _id;}
        set{_id=value;OnPropertyChanged("ID");}
    }
    //Name属性同上 

    public void Query()//假如界面点击的查询按钮
    {       
         Person p=GetPersonFromDb(); 
         p.ID=this.ID;
         p.Name=this.Name;   
    } 
    public void Save(){}
 }

这样从数据库中获得Person,然后将值赋给ViewModel中属性,就可以实现更新界面。

Model中没有任何函数,只有属性。

-----------------------------

但是现在要将表Person中的所有列显示在DataGrid中,并且编辑后保存到数据中。

这时Model和ViewModel都必须实现实现INotifyPropertyChanged。这样在DataGrid中编辑的内容才能更新到对应Person的属性中。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式