2011-07-14 28 views
1

你好Stackoverflowians我有關於什麼是確保你的Silverlight或WPF的觀點是否正確開球NotifyPropertyChanged事件的最佳方法問題的方式,的Silverlight和WPF - 的DataContext和PropertyChangedEvents是KickedOff

我有一個Silverlight應用程序中的情況下,我設置我的DataContext像這樣;

public SubTopic SubTopicItem 
     { 
      get { return (SubTopic)GetValue(SubTopicItemProperty); } 
      set { SetValue(SubTopicItemProperty, value); } 
     } 

     // Using a DependencyProperty as the backing store for SubTopicItem. This enables animation, styling, binding, etc... 
     public static readonly DependencyProperty SubTopicItemProperty = 
      DependencyProperty.Register("SubTopicItem", typeof(SubTopic), typeof(AddModifySubTopic), new PropertyMetadata(null)); 


     public AddModifySubTopic() 
     { 
      InitializeComponent(); 
      this.DataContext = this;  
     } 

而我有一些數據網格的問題,拉出數據在這個對象上的一些EntityPropertys。

我的主要問題是,它將使任何真正的區別,如果不是使用

public AddModifySubTopic() 
    { 
     InitializeComponent(); 
     this.DataContext = this;  
    } 

我使用:

 public AddModifySubTopic() 
     { 
      InitializeComponent(); 
      this.DataContext = SubTopicItem;  
     } 

請問Silverlight的或WPF框架更直接地對待DataContext的,併發出通知如果有任何屬性或實體集改變了對象的生命週期?

在此刻,我需要用

DataGridName.SetValue(DataGrid.ItemsSourceProperty, SubTopicItem); 

謝謝大家來更新我的DataGrid中。

乾杯 羅比

+0

曾經使用MVVMLight工具包? –

+0

@GlennFerrieLive - 不,我現在沒有,現在查找它。你認爲這會幫助我嗎? –

回答

2

這聽起來像您有綁定的問題。我認爲你發佈的大部分代碼都不會解決這個問題。

如果結合不工作,它幾乎總是一個與問題:

  1. 的XAML綁定語法。
  2. 源對象以及如何實現INotifyPropertyChanged。

我會推薦蒸餾掉非工作代碼,儘可能簡化情況,然後發佈您的XAML和源對象。

編輯

從您的評論:

當一個新項目被添加到一個List<TYPE>和 問題更問什麼是最好的辦法,會出現問題? this.DataContext = DependencyObject的或this.DataContext = CHILDWINDOW/PAGE等

如何設置在DataContext不應該影響如何綁定工作(所有其他條件都相同)。

如果您確實在使用List<Type>,那很可能是您的問題,因爲收集更改通知的工作方式與屬性更改通知不同。你會想綁定到ObservableCollection<Type>。我不確定如果這是一個選項,如果您的實體類生成,但它可能是(我不是一個實體框架專家)。

+0

我的綁定工作得很好,對象是一個EntityObject,已經有NotifyPropertyChanged實現爲默認(我相信)。當一個新項目被添加到列表並且問題更多地詢問什麼是最佳方法時會發生問題? this.DataContext = DEPENDENCYOBJECT或this.DataContext = CHILDWINDOW/PAGE等 –

+1

查看我上面的編輯。 –

+0

感謝Phil,將我的Collection類型更改爲Observable Collection修復了一切。 –