更新文本框wpf c#上的字符串更新

本文关键字:更新 字符串 wpf 文本 | 更新日期: 2023-09-27 18:07:25

我有以下情况:

一个文本框,当字符串值更改时更新,如日志字段。

我实现:

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"属性永远不会被调用,文本框永远不会显示文本。

更新文本框wpf c#上的字符串更新

解决了在主窗口初始化时设置文本框的数据上下文的错误,如下所示:

  private void InitDataModels()
        {
            SerialManager = new SerialManager();
            cbPorts.DataContext = SerialManager;
            txtLogView.DataContext = SerialManager;
            this.DataContext = this;
        }