清除wpf中的datagrid值

每次单击treeviewitem时,我都需要刷新我的datagrid 。 我的代码如下。

 private void treeView1_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs e) { this.dataGrid1.Columns.Clear(); this.dataGrid1.ItemsSource= null; String path =this.treeView1.SelectedItem; if (!File.Exists(path)) MessageBox.Show("Not Found"); else { ob.provider(path); // String data = @"C:\logs.xml"; string data = path; objref.functionality(data); this.dataGrid1.ItemsSource = objref.Result; } } 

但每当我点击树视图项时,datagrid都不会被清除 – 它会附加传入的数据。 我使用了dataGrid1.Columns.Clear()dataGrid.ItemSource= null; 我怎样才能做到这一点??

如果您使用以下方法填充DataGrid:

 dataGrid.Items.Add(someObject); 

然后你应该可以使用:

 dataGrid.Items.Clear(); 

删除所有行。

如果您绑定到ItemsSource,如:

 dataGrid.ItemsSource = someCollection; 

然后你应该能够将ItemsSource设置为null,它将删除所有行。

编辑:

别忘了刷新它:

 dataGrid.Items.Refresh(); 

我尝试了几种方法,这是迄今为止最好,最可靠的方法之一:

 dataGrid.Columns.Clear(); dataGrid.Items.Clear(); dataGrid.Items.Refresh(); 

您可以考虑使用ObservableCollection<>类而不是IEnumerable<>

 ObservableCollection users = new ObservableCollection(); dataGrid1.ItemsSource = users; 

您可以使用以下代码清除数据网格。

 users.Clear(); 

我有一个公共的IEnumerable集合,每次调用该函数时都会附加它。 因此,通过覆盖它,我刷新了Datagrid中的数据。