我正在使用WPF和MVVM体系结构。 我需要使用接收到的任何串行数据来更新我的视图和数据模型,这可以随时进行。
要实现这一点,我有
Class Report < ApplicationRecord
has_many :features, dependent: :destroy
accepts_nested_attributes_for :features
def features_attributes=(features_attributes)
features_attributes.each do |feature_attributes|
f = Feature.by_id_or_map_linkage(feature_attributes)
if f
f.update_attributes(feature_attributes)
else
f = Feature.create(feature_attributes)
end
self.features << f
end
end
end
每当我通过DataReceivedHandler()接收数据时,我都想通知viewModel有要显示的新数据并将其存储在我的模型中(这仅仅是接收到的字节以及与第一个值相关的颜色字节)。
将其传达给viewModel的最佳方法是什么?
我也尝试直接从SerialPortService类更新模型,但是出现了与线程关联性有关的错误。
谢谢!
答案 0 :(得分:1)
向SerialPortService添加事件,以便ViewModel可以侦听数据添加的事件:
static public event EventHandler<NewDataReceivedArgs> NewDataReceived;
static public void OnNewDataReceived(byte[] data)
{
var handler = NewDataReceived;
if (handler != null)
{
handler(null, new NewDataReceivedArgs(){Data = data});
}
}
public class NewDataReceivedArgs : EventArgs
{
public byte[] Data { get; set; }
}
然后在您的DataReceivedHandler中:
// update the viewModel with the data in rx_buffer here?!
OnNewDataReceived(rx_buffer);