11

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

private void treeView1_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs<object> 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;
    }
}

但是每次当我单击树视图项时,数据网格都不会被清除——它会附加传入的数据。我两个都用过dataGrid1.Columns.Clear()dataGrid.ItemSource= null; 我该怎么做??

4

6 回答 6

32

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

dataGrid.Items.Add(someObject);

然后你应该能够使用:

dataGrid.Items.Clear(); 

删除所有行。

如果您绑定到 ItemsSource,例如:

dataGrid.ItemsSource = someCollection;

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

编辑:

不要忘记刷新它:

dataGrid.Items.Refresh();
于 2013-01-23T05:40:10.673 回答
4

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

ObservableCollection<User> users = new ObservableCollection<User>();
dataGrid1.ItemsSource = users;

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

users.Clear();
于 2015-09-21T00:53:51.130 回答
3

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

dataGrid.Columns.Clear();
dataGrid.Items.Clear();
dataGrid.Items.Refresh();
于 2016-11-16T11:31:48.083 回答
0

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

于 2013-01-23T08:50:17.900 回答
0

我可以通过将 DataContext 设置为 null 来清除我的数据网格。

DataGrid.DataContext=null;
于 2019-05-06T14:30:17.847 回答
0

如果绑定一个Itemsource,最简单的方法是

dataGrid1.ItemSource = null;

于 2019-08-29T10:17:02.580 回答