事件回调后更改wpf元素

时间:2017-07-04 07:54:56

标签: c# wpf events event-handling

我正在通过串口连接的秤上读取重量。当重量改变时,比例返回一个事件。这个事件工作得很好,但是我不能用新的权重更改事件处理程序中的WPF元素的值(尝试使用标签和文本框)。

事件处理程序位于正确的窗口类中。

当我打电话给消息框显示重量时,一切都很好。

有人可以向我解释如何在事件回调后更改wpf元素。这是我的回调功能。

public void OnWeightUpdate(string weight) {
    if(String.IsNullOrEmpty(weight)) {
        MessageBox.Show("Empty weight string, possible bad connection with scale");
    }
    else {
        MessageBox.Show(weight);
        LblScaleAmount.Content = weight;
    }
}

1 个答案:

答案 0 :(得分:0)

由于您从串口收到重量信息 - 您的回调很有可能在后台运行(非UI线程)。您无法从后台线程更新接口控件,因此您需要将更新操作分派回UI线程:

Dispatcher.Invoke(() => LblScaleAmount.Content = weight);