WPF之ViewModel数据模型与UI数据双向绑定

近来,公司正在做一个WPF的项目,目前在项目论证与技术选型阶段。对于WPF,我是个完全的新手,而我们项目组也没有做过WPF项目,现处于技术积累阶段。遇到WPF数据双向绑定问题,在此记录之,如有错漏之处,欢迎批评指正!

一、在Model层,定义实体类City,如下:

public class City
    {
        [Key]
        public long CityID { get; set; }

        public string CityName { get; set; }

        public string ZipCode { get; set; }

        public long ProvinceID { get; set; }

        public DateTime DateCreated { get; set; }

        public DateTime DateUpdated { get; set; }
    }

二、在ViewModel层,定义类CityViewModel,如下:

public class CityViewModel : INotifyPropertyChanged
    {
        private string _City { get; set; }
        public string City
        {
            get
            {
                return _City;
            }
            set
            {
                _City = value;
                if (PropertyChanged != null)
                {
                    PropertyChanged.Invoke(this, new PropertyChangedEventArgs("City"));
                }
            }
        }

        public event PropertyChangedEventHandler PropertyChanged;
    }

此处,实现接口 INotifyPropertyChanged是实现双向绑定的关键;

public event PropertyChangedEventHandler PropertyChanged;--------此句是实现INotifyPropertyChanged接口自动生成的事件;

在属性的set方法里添加如下代码,目的就是实现数据的更新:

if (PropertyChanged != null)
{
       PropertyChanged.Invoke(this, new PropertyChangedEventArgs("City"));
}

大致WPF里的数据双向绑定就是这么实现的。

三、数据双向绑定的ViewModel里,如果用到泛型集合,不建议使用List,因为它无法支持数据的双向绑定。应使用ObservableCollection泛型集合。

至此,WPF里数据的双向绑定,我理解的,大致如此。发此贴,即希望给需要的人提供力所能及的帮助,同时也是希望得到大家的批评指正。我很希望来自大家的留言,与大家交流进步。

你可能感兴趣的:(WPF)