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);
        }
View Code

相关文章: