2014-02-17 88 views
0

我有一个传感器类和一个测试类。每个测试对象都有一个传感器阵列。我的MainWindow类有一个测试对象。传感器类扩展了INotifyPropertyChanged,并且当某个属性发生变化时,我设置了一个可以广播的事件。我的问题是,我不知道如何订阅MainWindow类中的这些事件。 MainWindow拥有嵌入CefSharp的嵌入式Chromium窗口。我没有需要更改的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); 
    } 
} 

在主窗口

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

你有MVVM在项目实施是一个嵌入一个? – Jimmy

+0

无论如何,我不认为你可以订阅整个视图,你必须订阅个别的属性。 – Jimmy

+0

没有MVVM。只需打开一个WPF窗口,然后以编程方式将嵌入式webview添加到它的网格中。其他的一切都是从C#与JavaScript交谈处理的,反之亦然。 – nathansizemore

回答

0

我想通了。我必须分配传感器类中要调用的功能。这是我的新代码

//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是在主窗口某处类中定义的函数。