11

datagridatreeviewitemがクリックされるたびにフラッシュする必要があります。私のコードを以下に示します。

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関数が呼び出されるたびに追加されるパブリックコレクションがありました。それで、それを上書きすることによって、私は自分のデータグリッドのデータをフラッシュしました。

于 2013-01-23T08:50:17.900 に答える