DataTable
のプロパティには、DataGrid
がバインドされています。 データが大量のネットワークから送信されています。 WPF
に、新しいデータが到着するたびに既存の行をリロードせずにそのグリッドにデータを追加するよう指示する方法はありますか?DataGridにデータを追加するには?
DataTable
に新しい行を追加して、DataGrid.Items.Refresh()
を呼び出してみましたが、新しいデータが到着するたびにデータ全体が再読み込みされることが実際に分かります。
XAML:
<Grid>
<dg:DataGrid ItemsSource="{Binding MyDataTable} x:name="MyDataGrid"/>
</Grid>
のC#:
void NewDataArrived()
{
foreach (var line in NewData)
{
MyDataTable.Rows.Add(line);
}
MyDataGrid.Items.Refresh();
}
しかし、実際には新しいデータが到着するたびにデータ全体が再読み込みされることがわかりますか?そして、 'DataGrid.Items.Refresh()'は制御を再描画するだけです。 – Fabio
@Fabio私は数千行追加した後、いくつかの行を追加すると、既存のテーブルをクリアして、変更されたテーブル全体をDataGridコントロールにロードしようとしたかのように、UIが鈍く応答しなくなります。私はフレームワークに、既存のラインをコントロールに保存し、わずか数行を追加する必要があることを伝える方法があるかどうか疑問に思っていました。 – Shmoopy
データをグリッドにどのようにバインドしましたか? 'ObservableCollection'を使用する場合は、*ちょうど動作する必要があります*。 – ChrisF