zoukankan      html  css  js  c++  java
  • C# 中的INotifyPropertyChanged和ObservableCollection<T>

    INotifyPropertyChanged
    它的作用:向客户端发出某一属性值已更改的通知。
    当属性改变时,它可以通知客户端,并进行界面数据更新.而我们不用写很多复杂的代码来更新界面数据,这样可以做到方法简洁而清晰,松耦合和让方法变得更通用.可用的地方太多了:例如上传进度,实时后台数据变更等地方。
    它的作用:向客户端发出某一属性值已更改的通知。
    当属性改变时,它可以通知客户端,并进行界面数据更新.而我们不用写很多复杂的代码来更新界面数据,这样可以做到方法简洁而清晰,松耦合和让方法变得更通用.可用的地方太多了:例如上传进度,实时后台数据变更等地方.目前我发现winform和silverlight都支持,确实是一个强大的接口.
    在构造函数中先绑定
    public Class_Name()   
    {   
        User user = new User();    
        user.Name = "your name";    
        user.Address = "your address";    
      
        textBox1.Text = user.Name;   
        textBox2.Text = user.Address;   
    }  
    编写一个简单的业务类
    public class User : INotifyPropertyChanged   
    {   
        public event PropertyChangedEventHandler PropertyChanged;    
      
        private string _name;    
        public string Name    
        {   
            get { return _name; }   
            set    
            {   
                _name = value;   
               if(PropertyChanged != null)   
                {   
                    PropertyChanged(thisnew PropertyChangedEventArgs("Name"));   
                }   
            }   
        }   
      
        private string _address;   
        public string Address   
        {   
            get { return _address; }   
            set    
            {   
                _address = value;   
                if (PropertyChanged != null)   
                {   
                    PropertyChanged(thisnew PropertyChangedEventArgs("Address"));   
                }   
            }   
        }   
    }  
     
    ObservableCollection
    绑定到集合
    数据绑定的数据源对象可以是一个含有数据的单一对象,也可以是一个对象的集合。之前,一直在讨论如何将目标对象与一个单一对象绑定。Silverlight中的数据绑定还能将目标对象与集合对象相绑定,这也是很常用的。比如显示文章的题目列表、显示一系列图片等。
    如果要绑定到一个集合类型的数据源对象,绑定目标可以使用ItemsControl,如ListBox或DataGrid等。另外,通过定制ItemsControl的数据模板(DataTemplate),还可以控制集合对象中每一项的显示。
     使用ObservableCollection
    数据源集合对象必须继承IEnumerable接口,为了让目标属性与数据源集合的更新(不但包括元素的修改,还包括元素的增加和删除)保持同步,数据源集合还必须实现INotifyPropertyChanged接口和INotifyCollectionChanged接口。
    在Silverlight中创建数据源集合可以使用内建的ObservableCollection类,因为ObservableCollection类既实现了INotifyPropertyChanged接口,又实现了INotifyCollectionChanged接口。使用ObservableCollection类不但可以实现Add、Remove、Clear和Insert操作,还可以触发PropertyChanged事件。
  • 相关阅读:
    数据库架构的演变
    一个简单的跨库事务问题
    一个优美的架构需要考虑的几个问题
    铁道部新客票系统设计
    详细介绍软件架构设计的三个维度
    单代号网络图
    分库分表带来的完整性和一致性问题
    软件架构设计箴言理解
    设计高并发的电子商店
    mysql之索引补充
  • 原文地址:https://www.cnblogs.com/linzheng/p/1970443.html
Copyright © 2011-2022 走看看