各位好:小弟应用WPF碰到这样一个问题,首先在一个窗体类中声明了一个ObservableCollection<T>变量,并将它与DataGrid控件绑定,并且是Mode是TwoWay。public partial class MainWindow : Window
{
   private ObservableCollection<T> testData = new ObservableCollection<T>();
   ...
   DataGrid.DataContext = this.testData;
}
然后再把它作为参数传递给一个类,目的是在此类中对testData进行修改,让其在DataGrid显示出来public partial class MainWindow : Window
{
   Transaction t = new Transaction(testData);
}public class Transaction
{
   private ObservableCollection<T> _testData;
   public Transaction(ObservableCollection<T> ttestData)
   {
      this._testData = ttestData;
   }   void f()
   {
     //对_testData进行修改...
   }
}
通过监控变量发现窗体的testData的值确实发生了改变,但窗体的DataGrid没有变化,按说进过绑定后testData发生变化,控件该立即跟着变化才对,不知是什么原因,谢谢

解决方案 »

  1.   

    需要实现INotifyPropertyChanged接口
      

  2.   

    直接修改引用不行,应该是遍历 Add 到 _testData 中你这是整个引用变化了。要么如楼上说的,实现 TestData 属性,里面 RaisePropertyChanged public ObservableCollection<T> TestData
    {
       get { return _testData; }
       set {
           _testData = value;
           RaisePropertyChanged("TestData");
       }
    }
      

  3.   

    ObservableCollection<T>应该已经实现了INotifyPropertyChanged接口,因此还是add的方法吧,我原先觉得WPF应该能自动更新或者有更好的方法。谢谢两位的回答,结贴给分