1.最常用的一种方式,写在xaml.cs文件中的代码 姜彦20180522 2137
#region DataGrid 跨线程委托输出显示方法 姜彦20180315 1439 /// <summary> /// DataGrid控件直接接受串口返回数据委托 /// </summary> /// <param name="e"></param> public delegate void DataGridReceiverDelegate(TSerialPortController.ReceivedEventArgs e); public void DataGridReceiver(TSerialPortController.ReceivedEventArgs e) { FrameContent frameData = new FrameContent(); frameData.Time = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"); frameData.DataContent = e._ReceiveData; _FrameContents.Add(frameData); } public void DataGridReceiverShow(TSerialPortController.ReceivedEventArgs e) { this.dgFormula.Dispatcher.Invoke(new DataGridReceiverDelegate(DataGridReceiver), e); } /// <summary> /// DataGrid控件输出FrameContent对象委托 /// </summary> /// <param name="frameContent"></param> public delegate void DataGridTextBoxShowDelegate(FrameContent frameContent); public void DataGridTextBox(FrameContent frameContent) { _FrameContents.Add(frameContent); dgFormula.ScrollIntoView(_FrameContents[_FrameContents.Count - 1], dgFormula.Columns[0]);//滚动条自动跟踪 姜彦20180315 1929 } /// <summary> /// 将数据显示到DataGrid表格中 /// </summary> /// <param name="frameContent"></param> public void DataGridTextBoxShow(FrameContent frameContent) { frameContent.RowCount = _RowCount; _RowCount++; this.dgFormula.Dispatcher.BeginInvoke(new DataGridTextBoxShowDelegate(DataGridTextBox), frameContent); }