(DataContextを使用して)DataViewで埋めるDataGridがあります。別のスレッドでそれを実行しようとしましたが、UIがフリーズします。DataGridにデータを入力するときにUIがフリーズしないようにしたい。
これまでに作成したコードは次のとおりです。
private void btnOK_Click(object sender, RoutedEventArgs e)
{
GetFieldsBLL getFieldsBLL = new GetFieldsBLL();
DataView dv = getFieldsBLL.GetWholeView(ViewName);
Task task = new Task(() => ucDataExtracViewControl.PopulateGrid(dv));
task.Start();
}
public void PopulateGrid(DataView dv)
{
dgView.Dispatcher.BeginInvoke(DispatcherPriority.Normal, new Action(delegate{
dgView.Columns.Clear();
dgView.AutoGenerateColumns = false;
foreach (DataColumn column in dv.Table.Columns)
{
var gridColumn = new DataGridTextColumn()
{
Header = column.ColumnName,
Binding = new Binding("[" + column.ColumnName + "]")
};
dgView.Columns.Add(gridColumn);
}
dgView.DataContext = dv;
DataView = dv;
}));
}
前もって感謝します!
編集:列を再作成する理由は、一部の列名の名前にドットが含まれているためです。たとえば、「ジョブ番号」。バインディングを使用する場合、データは生成されません。詳細はこちら:ドット付きのDataTable列名がWPFのDataGridコントロールに適さない理由は何ですか?データベースに変更を加えることはできません。– </ p>