WPF数据绑定UI不更新原因之一

发布时间 2023-06-30 11:10:51作者: 獨懼

下面是有问题的代码

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,
   });
}