2010-12-17 35 views
0

與我的同事一起,我們在SilverLight上遇到了Prism的NotificationObject問題。如何檢查我的事件處理程序是否被SL中的RaisePropertyChanged()取消或未調用?

我們的問題是;

  • 我們的事件處理程序綁定到我們的DependencyProperties
  • 然後我們調用RaiseChangedEvent在二傳手
  • 當我們調試,我們看到,事件處理程序被分配當proerty值改變它被稱爲之一。
  • 但是,當我們在UI中改變屬性值一次時,這次我們看到我們的事件處理程序沒有被調用。

所以我們要確保:

  • 如果事件處理程序仍然綁定(除非它不爲空,我們認爲它是綁定)
  • 如果綁定爲什麼事件是取消或爲什麼我們的匿名事件處理程序方法不再被調用(斷點未命中)

    您可以在下面看到代碼片段。

    我的問題是:

    有沒有辦法明白爲什麼RaisePropertyChanged( 「myProperty的」);是不是調用一個事件處理程序分配給這個名爲Requestor的DependencyProperty?有什麼建議麼?

    如果我概括:是否有可能步入RaisePropertyChanged(「Requestor」);打電話讓它做什麼,它在哪裏退出

見我的代碼片段:

// My dependency property in my ViewModel 
public CompanyEntity MyProperty 
{ 
    get { return _MyProperty; } 
    set 
    { 
     _MyProperty = value; 
     RaisePropertyChanged("MyProperty"); 
    } 
} 


// And my Dependency Property Event handler setting in my user control: 
public static readonly DependencyProperty FactoryProperty = 
DependencyProperty.Register("Factory", typeof (FactoryEntity), typeof (FactoryPicker), 
    new PropertyMetadata((x, y) => 
      { 
       // Some settings and processes 
      })); 

回答

0

檢查您是否在綁定時錯過了Mode = TwoWay聲明。

相關問題