日期:2014-05-17  浏览次数:21141 次

Wpf中ListView的数据绑定的更新同步问题(后台绑定数据更新)
C# code

 public partial class MainWindow : Window
    {
        public class Customer:INotifyPropertyChanged  //定义的类,用于添加到List
        {
            public string name;
            public string imageUrl;
            public string sex;
            public string age;
 
            public string Name 
            { 
                get { return name; } 
                set { name = value; OnPropertyChanged(new PropertyChangedEventArgs("Name")); }
            }
            public string ImageUrl
            {
                get { return imageUrl ;}
                set { imageUrl = value; OnPropertyChanged(new PropertyChangedEventArgs("ImageUrl")); } 
            }
            public string Sex 
            {
                get { return sex;}
                set { sex = value; OnPropertyChanged(new PropertyChangedEventArgs("Sex")); } 
            }
            public string Age 
            {
                get { return age;}
                set { age = value; OnPropertyChanged(new PropertyChangedEventArgs("Age")); } 
            }

            #region INotifyPropertyChanged 成员
 
            public event PropertyChangedEventHandler PropertyChanged;
            public void OnPropertyChanged(PropertyChangedEventArgs e)
            {
                if (PropertyChanged != null)
                {
                   PropertyChanged(this, e);
                }
            }
            #endregion
        }
        List<Customer> listCustomer = new List<Customer>();  //数据源
        public MainWindow() //构造函数
        {
            this.InitializeComponent();
            listCustomer.Add(new Customer() { ImageUrl = "Pic/P_1.png", Name = "hehe1", Sex = "男", Age = "12" });
            listview.DataContext = listCustomer;     //此处添加绑定
          }


效果如图:


上图足以证明绑定成功!!!但问题来了。。。。。。。。。。。。。。。。。。。。。
有如下按钮事件
C# code

        private void button1_Click(object sender, RoutedEventArgs e)
        {  
            listCustomer.Add(new Customer() { ImageUrl = "Pic/P_5.png", Name = "hehe2", Sex = "女", Age = "16" });     
        }


意思就是:再通过按钮动态添加一个新的纪录
结果:经测试,listCustomer中确实多了一个记录,但程序界面中却没有更新,也就是没有达到我想要的如下效果:

前提是:我已经在xaml文件中确确实实添加了绑定,请问这个如何解决???还需要什么代码吗?

难道是绑定了listview.DataContext = listCustomer; 之后的改变就不行了???还是学艺不精。。。望高手指教,有代码
帮忙解决最好不过!!!




------解决方案--------------------
用 ObservableCollection<T> 类 或 BindingList<T> 类 代替 List 类