下面是有问题的代码
private ObservableCollection<Params> _values; public MainWindow() { InitializeComponent(); this.dgrid1.ItemsSource = _values; } private void btnUploadClick(object sender, RoutedEventArgs e) { _values = new ObservableCollection<Params> { new AirtightParam { DeviceNumber = 1, ProgramNumber = 2, TestType = 3, }, }; }
原因分析:在窗口构造时给datagrid控件设置一个数据源_values,但实际上是null的。在按钮点击时给数据源实例化,实际上不是构造时指定的那个_values。应该在构造时实例化一个_values,并在按钮点击时使用同一个源。
更新代码:
private ObservableCollection<Params> _values; public MainWindow() { InitializeComponent(); _values = new ObservableCollection<Params>(); this.dgrid1.ItemsSource = _values; } private void btnUploadClick(object sender, RoutedEventArgs e) { _values.Clear(); _values.Add(new AirtightParam { DeviceNumber = 1, ProgramNumber = 2, TestType = 3, }); }