2012-06-08 100 views
1

當我第一次將投標分配給Label的構造函數時,Label正確綁定並根據CurrentMarket類的當前ComponentData值顯示正確的信息。但是,當ComponentData更改時,OnPropertyChanged事件觸發正常,但ProperyChanged處理程序始終爲NULL。有人可以好好建議我做錯了什麼?PropertyChanged事件處理程序始終爲空

我有一個標籤,我這樣設置綁定:

public StyledLabel(string Property, int i) 
    { 
     Binding BindingText = new System.Windows.Data.Binding(Property); 
     BindingText.Source = Statics.CurrentMarket.ComponentData; 
     BindingText.Converter = new TextConverter(); 
     this.SetBinding(Label.ContentProperty, BindingText); 

    } 

當前市場類看起來是這樣的:

public class CurrentMarket : INotifyPropertyChanged 
{ 
    string sMarket = ""; 
    ComponentData cComponentData; 

    public string Market 
    { 
     set 
     { 
      sMarket = value; 
      OnPropertyChanged("Market"); 
      ComponentData = SharedBoxAdmin.Components[sMarket]; 
     } 
     get 
     { 
      return sMarket; 
     } 
    } 

    public ComponentData ComponentData 
    { 
     get { return cComponentData; } 
     set 
     { 
      cComponentData = value; 
      OnPropertyChanged("ComponentData"); 
     } 
    } 

    public CurrentMarket() 
    { 
    } 

    public event PropertyChangedEventHandler PropertyChanged; 

    private void OnPropertyChanged(string info) 
    { 
     PropertyChangedEventHandler handler = PropertyChanged; 
     if (handler != null) 
     { 
      handler(this, new PropertyChangedEventArgs(info)); 
     } 
    } 

} 

謝謝!

回答

3

嘗試指定要綁定屬性名稱作爲BindingPath(而不是作爲Source的一部分):

Binding BindingText = new System.Windows.Data.Binding(Property); 
BindingText.Source = Statics.CurrentMarket; 
BindingText.Path = new PropertyPath("ComponentData"); 
BindingText.Converter = new TextConverter(); 
this.SetBinding(Label.ContentProperty, BindingText); 
相關問題