如何从视图更新模型



我有Model class Employee:

public class Employee   
{
    public string Id { get; set; }  
    public string Name { get; set; }  
    public string LastName { get; set; }            
}

和视图模型类EmployeeViewModel,其中包含一个Employee Object

public class EmployeeViewModel : INotifyPropertyChanged  
{  
    public EmployeeViewModel()
    {
    }            
    private Employee currentEmployee;
    public Employee CurrentEmployee
    {
        get { return this.currentEmployee; }
        set
        {
            this.currentEmployee = value;
            this.NotifyPropertyChanged("CurrentEmployee");
        }
    }
    //Some code .....
    #region INotifyPropertyChanged Members
    public event PropertyChangedEventHandler PropertyChanged;
    private void NotifyPropertyChanged(string propertyName)
    {
        if (this.PropertyChanged != null)
        {
            this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
        }
    }
        #endregion
}

现在视图(WPF)将使用视图模型中的Employee对象作为ItemSource来显示员工数据

现在的问题是:我在视图上有更新按钮,当我改变视图中的Employee属性(通过文本框)我想更新模型(所以之后我可以更新数据库),如何从视图更新此模型。

因为我检查了你的模型类有一些奇怪的东西。它应该实现INotifyPropertyChanged,然后为每个属性创建支持字段,就像这样。

模型类

public class Employee:INotifyPropertyChanged
    {
        private string _name;
        public string Name
        {
            get
            {
                return _name;
            }
            set
            {
                _name= value;
                OnPropertyChanged("Name");
            }
        }
          #region INotifyPropertyChanged Members
        public event PropertyChangedEventHandler PropertyChanged;
        private void OnPropertyChanged(string propertyName)
        {
            if (PropertyChanged != null)
            {
                PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
            }
        }
        #endregion
    }
**ViewModel Class**
 class EmployeeViewModel 
    {
        private IList<Employee> _employees;
        public EmployeeViewModel()
        {
            _employees= new List<Employee>
            {
                new Employee{ID=1, Name ="Emp1"},
                new Employee{ID=2, Name="Emp2"}
            };

        }
        public IList<Employee> Employees
        {
            get
            {
                return _employees;
            }
            set
            {
                _employees= value;
            }
        }
        private ICommand mUpdater;
        public ICommand UpdateCommand
        {
            get
            {
                if (mUpdater == null)
                    mUpdater = new Updater();
                return mUpdater;
            }
            set
            {
                mUpdater = value;
            }
        }
        private class Updater : ICommand
        {
            #region ICommand Members
            public bool CanExecute(object parameter)
            {
                return true;
            }
            public event EventHandler CanExecuteChanged;
            public void Execute(object parameter)
            {
            }
            #endregion
        }
    }

你可以把你的逻辑在OnPropertyChanged事件。这个方法总是在你修改UI

时被调用。

如果您正在使用ObservableCollection修改您的List通过搜索基于ID的项目,然后如果发现做值的修改。您所做的任何更改都将自动影响绑定到ObservableCollection的UI项,然后使用修改后的集合来更新DB记录

相关内容

  • 没有找到相关文章

最新更新