我有传感器类和测试类。每个测试对象都有一个传感器阵列。我的MainWindow类有一个Test Object。传感器类扩展了INotifyPropertyChanged,我设置了一个事件,以便在某个属性发生变化时进行广播。我的问题是,我不知道如何在MainWindow类中订阅这些事件。 MainWindow拥有一个Chromium Embedded窗口,包含在CefSharp中。我没有需要更改的UI元素,只需要在事件发生时调用函数/方法。
这是我目前正在尝试的,但是在操作员的右侧不允许继续收到有关该属性的错误?
传感器类
//Event for when new data is placed into temp_readings
public event PropertyChangedEventHandler PropertyChanged;
//Adds a new reading to the data set
public void addReading(float reading)
{
this.temp_readings.Add(reading);
OnPropertyChanged(new PropertyChangedEventArgs("new_data_id" + this.id));
}
//Raises an event that new readings have been added
protected void OnPropertyChanged(PropertyChangedEventArgs e)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null)
{
handler(this, e);
}
}
在MainWindow
private void InitializeWebView()
{
//Disable Caching
BrowserSettings settings = new BrowserSettings();
settings.ApplicationCacheDisabled = true;
settings.PageCacheDisabled = true;
settings.FileAccessFromFileUrlsAllowed = true;
//Initialize WebView
this.webView = new WebView(index, settings);
//View Property Event Handlers
this.webView.PropertyChanged += this.webViewPropertyChanged;
//Event handlers for new data added to sensors
for (int x = 0; x < this.test.sensors.Length; x++)
{
this.webView.PropertyChanged += this.test.sensors[x].PropertyChanged;
}
//Load it into the XAML Grid
main_grid.Children.Add(webView);
}
我看到的所有示例都是为WPF端的按钮或其他东西设置它们,并绑定到类中的数据。我想在传感器的数据阵列发生任何变化时,只需在MainWindow类中触发一个方法。
提前感谢您的帮助!
答案 0 :(得分:0)
我明白了。我必须在Sensor类中分配我想要Event的函数来调用。这是我的新代码
//Event handlers for new data added to sensors
for (int x = 0; x < this.test.sensors.Length; x++)
{
this.test.sensors[x].PropertyChanged += handleStuff;
}
其中,handleStuff
是MainWindow类中某处定义的函数。