2011-05-23 122 views
0

我是一個C#初學者,我的第一個項目是串口的終端應用程序。傳入的數據是ASCII字符,並且它們帶有115 kbaud。如何將串口的傳入字符串追加到文本框?

現在我想將每個入局行綁定到wpf文本框。在我的串行端口類中,我使用IPropertyChanged事件,併成功地將每個入局行綁定到文本框。但僅僅看到一行是不令人滿意的,文本框的內容應該隨每個入口行一起附加。我不想在我的串口類中收集字符串,只需將它們再次發送到每個新的字符串。我試過了,結果很慢。

接着我試圖使用結合事件TargetUpdated使用textbox.AppendText(incomingline)...

<TextBox 
Name="textBoxIncoming" 
Text="{Binding Path=Incoming, Mode=OneWay, NotifyOnTargetUpdated=True}" 
DataContext="{Binding NotifyOnTargetUpdated=True}" 
IsReadOnly="True" 
TargetUpdated="textBoxIncoming_TargetUpdated" 
... />` 

其結果是,每個傳入線在文本框中顯示兩次,線條之前清除。

有誰知道,如何將文本附加到帶有wpf綁定的文本框?

回答

0

這不能單獨使用綁定來完成。相反,創建一個列表,您可以添加您收到的所有行。修改Incoming屬性以返回字符串.Join(Environment.NewLine,listOfReceivedStrings)。

+0

我認爲更新所有以前的行(比方說100)與新的入局行一起正在殺死性能。新的線路幾乎每毫秒都會出現。現在我嘗試了一個自定義事件LineReceived將文本追加到文本框。但是這讓我陷入了串擾的困境。所以我調用wpf調度程序BeginInvoke與每一個新行來追加行到文本框。但是這種情況相當緩慢。 – 2011-05-24 09:30:48

+0

您的解決方案是正確的,基本上可以使用TextBox獲得最快的解決方案。文本框不包含極端數量的文本。下一步你會嘗試使用列表(附加項目)或自定義繪圖代碼。 – usr 2011-05-24 12:03:13