在字符串更新上更新文本框 wpf C#
Update textbox wpf C# on string Update
我有以下情况:
一个在字符串值更改时更新的文本框,如日志字段。
我的实现:
XAML
...
<TextBox x:Name="txtLogView" Margin="10" Grid.Row="1" TextWrapping="Wrap">
<TextBox.Text>
<Binding Path="TextoLog" Mode="TwoWay" UpdateSourceTrigger="PropertyChanged"/>
</TextBox.Text>
</TextBox>
...
SerialManager.cs
...
private StringBuilder logText;
...
public String TextoLog
{
get { return logText.ToString(); }
set { logText.Append(value); OnPropertyChanged("TextoLog"); }
}
...
private void DataReceivedHandler(object sender, SerialDataReceivedEventArgs e)
{
SerialPort sp = (SerialPort)sender;
string indata = sp.ReadExisting();
TextoLog = indata;
}
当新数据到达串行端口时,变量 logText 会更新,我看到在 Textlog 的 "set" 属性 中,将 "get" 属性 永远不会已调用,但文本框从不显示文本。
在主窗口初始化时设置文本框的Datacontext错误已解决,如下:
private void InitDataModels()
{
SerialManager = new SerialManager();
cbPorts.DataContext = SerialManager;
txtLogView.DataContext = SerialManager;
this.DataContext = this;
}
我有以下情况:
一个在字符串值更改时更新的文本框,如日志字段。
我的实现:
XAML
...
<TextBox x:Name="txtLogView" Margin="10" Grid.Row="1" TextWrapping="Wrap">
<TextBox.Text>
<Binding Path="TextoLog" Mode="TwoWay" UpdateSourceTrigger="PropertyChanged"/>
</TextBox.Text>
</TextBox>
...
SerialManager.cs
...
private StringBuilder logText;
...
public String TextoLog
{
get { return logText.ToString(); }
set { logText.Append(value); OnPropertyChanged("TextoLog"); }
}
...
private void DataReceivedHandler(object sender, SerialDataReceivedEventArgs e)
{
SerialPort sp = (SerialPort)sender;
string indata = sp.ReadExisting();
TextoLog = indata;
}
当新数据到达串行端口时,变量 logText 会更新,我看到在 Textlog 的 "set" 属性 中,将 "get" 属性 永远不会已调用,但文本框从不显示文本。
在主窗口初始化时设置文本框的Datacontext错误已解决,如下:
private void InitDataModels()
{
SerialManager = new SerialManager();
cbPorts.DataContext = SerialManager;
txtLogView.DataContext = SerialManager;
this.DataContext = this;
}