C# 更新数据绑定对象中的值时,程序结构良好

C# 更新数据绑定对象中的值时,程序结构良好,c#,winforms,architecture,C#,Winforms,Architecture,我正在编写一个基于Winforms的工具,可以在结构上使用一些指导。该程序通过串行方式与硬件进行通信,并显示GUI以显示值。大多数值可以从pc设置,也可以从设备读取。有些是从pc设置的,然后由设备确认 目前,我有一个模型对象,其中包含设备可以发送或接收的所有值。它使用带有数据绑定的PropertyChangedEvent在表单上显示值。此外,还有一个编码器/解码器侦听事件,对更改进行编码并将其发送到串行端口 在串行端口接收功能中,对消息进行解码,并更新模型中的正确值。我遇到的问题是,这将导致另

我正在编写一个基于Winforms的工具,可以在结构上使用一些指导。该程序通过串行方式与硬件进行通信,并显示GUI以显示值。大多数值可以从pc设置,也可以从设备读取。有些是从pc设置的,然后由设备确认

目前,我有一个模型对象,其中包含设备可以发送或接收的所有值。它使用带有数据绑定的PropertyChangedEvent在表单上显示值。此外,还有一个编码器/解码器侦听事件,对更改进行编码并将其发送到串行端口

在串行端口接收功能中,对消息进行解码,并更新模型中的正确值。我遇到的问题是,这将导致另一个PropertyChangedEvent,它将发送另一个串行消息。我在寻找一个好方法,用其他的东西来代替那个听众?我想维护表单的数据绑定,这样每个表单元素就不需要事件

大多数值的声明如下:

private bool\u voltagevbatggle;
公共电网电压V切换
{
get=>\u电压vBattogle;
设置
{
如果(_voltageVBattogle!=值)
{
_电压Vbatoggle=值;
OnPropertyChanged();
}
}
}

这不应第二次触发OnPropertyChanged(),因为通过解码器接收的值应与通过UI设置的上一个值相同。您应该在此处开始调试。这不应该第二次触发
OnPropertyChanged()
,因为通过解码器接收的值应该与通过UI设置的上一个值相同。您应该在这里开始调试。