using System;
using System.Collections.Generic;
using 
      System.Linq;
using System.Text;
using System.Windows;
using 
      System.Windows.Controls;
using System.Windows.Data;
using 
      System.Windows.Documents;
using System.Windows.Input;
using 
      System.Windows.Media;
using System.Windows.Media.Imaging;
using 
      System.Windows.Navigation;
using System.Windows.Shapes;
using System.ComponentModel;
namespace Leo.WpfTest
{
    /// <summary>
    /// 
      MainWindow.xaml 的交互逻辑
/// </summary>
    public partial class 
      MainWindow : Window
    {
        public MainWindow()
        
      {
            InitializeComponent();
            
      this.InitData();
        }
        internal void InitData() 
        {
            
      IList<ModCls> modsCls = new List<ModCls>();
            for 
      (int i = 0; i < 60; i++)
            {
                ModCls mod 
      = new ModCls();
                mod.A = "A" + i;
                
      mod.B = "B" + i;
                mod.C = "C" + i;
                modsCls.Add(mod);
            }
            this.gridCls.ItemsSource = modsCls;
            
      this.gridCls.RefreshData();
        }
        private void Button_Click_1(object sender, RoutedEventArgs 
      e)
        {
            ModCls mod = new ModCls();
            
      mod.A = "A0";
            mod.B = "BB";
            mod.C = 
      "CC";
            IList<Leo.WpfTest.ModCls> temp = 
      this.gridCls.ItemsSource as List<Leo.WpfTest.ModCls>;
            
      IList<Leo.WpfTest.ModCls> tempA = (from p in temp
                
               where p.A == mod.A
                         select 
      p).ToList();
            if (tempA != null && tempA.Count > 
      0) 
            {
                for (int i = 0; i < temp.Count; i++)
             
         {
                    if (temp[i].A == mod.A) 
                   
       {
                        temp[i] = mod;
                        
      continue;
                    }
                }
                this.gridCls.RefreshData();
            }
        
      }
    }
    public class ModCls : INotifyPropertyChanged
    {
        
      public event PropertyChangedEventHandler PropertyChanged;  
        private string a;
        public string A 
        {
  
                set
            {
                a = value;
           
           if (PropertyChanged != null)//有改变  
{
PropertyChanged(this, new 
      PropertyChangedEventArgs("A")); 
                }
            }
 
                 get
            {
                return a;
           
       }  
        }
        private string b;
        public string B 
      
        {
            set
            {
                b = 
      value;
                if (PropertyChanged != null)//有改变  
      
{
PropertyChanged(this, new PropertyChangedEventArgs("B"));
     
                 }
            }
            get
            {
      
                return b;
            }   
        }
        private 
      string c;
        public string C 
        {
            set
  
                {
                c = value;
                if 
      (PropertyChanged != null)//有改变  
{
PropertyChanged(this, new 
      PropertyChangedEventArgs("C"));  
                }
            
      }
            get
            {
                return c;
     
             }   
        }
    }
}
原文地址:http://www.cnblogs.com/binbinxiong/p/3721245.html