zoukankan      html  css  js  c++  java
  • WPF ListView / ListBox 更新绑定数据源时,自动刷新界面显示

    问题现象:ListView 更新绑定数据源时,界面不能自动刷新。

    原因及解决方案:

    1、ListView 的 ItemSource 使用 BindingList < T >;

     注:由于 List < T > 没有实现 INotifyPropertyChanged 接口,

       因此若使用 List < T > 作为 ItemSource,则当 ListView 新增、删除 Item 时,ListView UI 会不能即时更新;

    2、对应 ListView 的 Item 的类 T 实现 INotifyPropertyChanged 接口;

      T 中 UI 绑定对应的属性 Set 设值后,调用 PropertyChanged() 函数以通知 UI 该属性已改变,示例如下:

      public partial class MainWindow : Window
      {
        public MainWindow()
        {
          InitializeComponent();

          BindingList<Customer> listCustomer = new BindingList<Customer>();
          listCustomer.Add(new Customer() { Name = "ZhangSan" });
          listView.ItemsSource = listCustomer;
        }
      }
      public class Customer : INotifyPropertyChanged
      {
        public string name;
        public string Name
        {
          get { return name; }
          set { name = value; OnPropertyChanged(new PropertyChangedEventArgs("Name")); }
        }

        #region // INotifyPropertyChanged成员
        public event PropertyChangedEventHandler PropertyChanged;
        public void OnPropertyChanged(PropertyChangedEventArgs e)
        {
          if (PropertyChanged != null)
          {
            PropertyChanged(this, e);
          }
        }
        #endregion
      }

  • 相关阅读:
    聊天系统Demo,增加文件传送功能(附源码)-- ESFramework 4.0 快速上手(14)
    文件传送,如此简单--ESFramework 4.0 快速上手(13)
    PAT B1012.数字分类
    PAT B1046.猜拳
    PAT B1016.部分A+B(15)
    记录:挑战搭建一个简易的成绩管理系统的数据库
    mysql学习记录(一)
    使用foreach一次性添加多个单选按钮
    通过metaclass实现精简的ORM框架
    高级BASH
  • 原文地址:https://www.cnblogs.com/dhqy/p/8694613.html
Copyright © 2011-2022 走看看