从视图模型更新模型

Joh*_*rby 2 c# wpf mvvm mvvm-light

从视图模型更新模型

我已经阅读了一些关于MVVM的帖子,但我不确定是否理解视图模型更新模型的方式

目前,我在UI中有两个文本框,它们绑定到XAML视图,并在引发事件时调用视图模型.当我更新模型时应该在视图模型中的哪个位置?

这是视图模型

class ViewModel:INotifyPropertyChanged
    {

 private String _url;
 private String _TemplateType;

    public string URL
    {
    get { return _url;  }
        set
        {
            if (value != _url)
            {
                _url= value;
                OnPropertyChanged("URL");
            }
        }
    }

    public string TemplateType
    {
    get { return _TemplateType;  }
        set
        {
            if (value != _TemplateType)
            {
                _TemplateType= value;
                OnPropertyChanged("URL");
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

该模型

internal class DefineAddinModel
{
    public string TemplateType { get; set; }
    public String URL { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

Rob*_*evy 5

ViewModel通常充当模型的包装器,并包含对模型的引用,该模型可以响应命令或在属性设置器中自动更新.

更新:这是一个让VM充当模型包装器的例子.在您的示例中,这似乎没用,但在很多情况下,您会发现VM的getter/setter需要对值进行某种转换,而不是简单地传递它们.

class ViewModel:INotifyPropertyChanged
{
 private DefineAddinModel model;

    public string URL
    {
        get { return model.URL;  }
        set
        {
            if (value != model.URL)
            {
                model.url = value;
                OnPropertyChanged("URL");
            }
        }
    }

    public string TemplateType
    {
        get { return model.TemplateType;  }
        set
        {
            if (value != model.TemplateType)
            {
                model.TemplateType = value;
                OnPropertyChanged("TemplateType");
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)