0
我正在寫一個程序,通過串行端口從設備讀取信息。我有一個數據網格中可用設備的列表。當用戶點擊一行時,它從設備中獲取信息並將其顯示在單獨的列表中。設備通常需要大約一秒的時間來響應並填充信息。但是,在這一秒內,datagrid行不會按選定的高亮顯示。因此,從鼠標單擊數據網格行的時間大約需要一秒鐘,以便實際顯示爲突出顯示/選擇。WPF - Datagrid選擇與後臺工作變更
我認爲一個後臺工作線程將是最好的東西用於此,但我得到了與下面的代碼相同的結果。我是否錯誤地使用了它,或者是否有其他方法可以選擇DataGrid行?
private void relayList_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
BackgroundWorker worker = new BackgroundWorker();
worker.DoWork += GetLinks;
worker.RunWorkerAsync();
}
private void GetLinks(object sender, DoWorkEventArgs e)
{
//send message to viewModel and do time-consuming work here
}
而不是在SelectionChanged事件內讀取,在MouseUp事件中,當然有條件來確定是否應該開始讀取。 – MikeG 2014-10-29 17:24:48
您確定延遲〜1秒代表等待設備所用的時間,而不是更新用戶界面的時間?最好在這裏花費太多時間之前驗證一下。還要確保在進行計算時不會將自己從視圖模型中重新組裝回「Dispatcher」。 – 2014-10-29 19:25:37
對不起,我被叫走了。感謝您的迴應;我會嘗試並更新。 – mikeminer 2014-10-29 21:48:34