2013-10-05 18 views
1

我在我的WPF應用程序中有一個屬性,我試圖綁定到UI。當我直接在viewmodel內更新屬性時,它就像我期望的那樣工作。但是,當我嘗試使用事件從另一個類中更新此屬性時,綁定似乎不起作用。在仔細觀察下,我認爲這是因爲PropertyChangedEventHandler在發生這種情況時爲空。從Event更新Viewmodel - PropertyChangedEventHandler爲空?

我的視圖模型內部屬性:

public int BeatNumber 
     { 
      get 
      { 
       return beatNumber; 
      } 
      set 
      { 
       if (beatNumber != value) 
       { 
        this.beatNumber = value; 
        RaisePropertyChanged(() => BeatNumber); 
       } 
      } 
     } 

事件內視圖模型:

public event EventHandler GetHtmlDone = delegate { }; 


public void GetHTML(string url) 
{ 
    BeatNumber++; 
} 

通知對象:

public class NotificationObject : INotifyPropertyChanged 
    { 
     protected void RaisePropertyChanged<T>(Expression<Func<T>> action) 
     { 
      var propertyName = GetPropertyName(action); 
      RaisePropertyChanged(propertyName); 
     } 

     private static string GetPropertyName<T>(Expression<Func<T>> action) 
     { 
      var expression = (MemberExpression)action.Body; 
      var propertyName = expression.Member.Name; 
      return propertyName; 
     } 

     private void RaisePropertyChanged(string propertyName) 
     { 
      if (PropertyChanged != null) 
       PropertyChanged(this, new PropertyChangedEventArgs(propertyName)); 
     } 



     public event PropertyChangedEventHandler PropertyChanged; 
    } 

我如何得到這個綁定更新時,我的事件從另一個班叫?

+0

您PropertyChangedEventHandler爲空它告訴也就是說,它沒有被設置爲按時間UI的的DataContext你提到的事件改變中的屬性你的虛擬機未綁定到UI它 – Nitin

+0

有沒有什麼辦法可以確保ViewModel在執行任何代碼之前被綁定?即。確保在構造函數中的綁定? – user547794

+0

是的,您將虛擬機設置爲datacontext在其構造函數中查看... – Nitin

回答

0

通過使用Commands來解決它,而不是從Events中調用方法。

有關更多信息,請參見ICommand interface