2012-01-20 16 views
0

我有下面的類作爲如何更新ListBoxItem的[用的DataContext]

class s 
{ 
public string name{get;set;} 
public string family {get;set;} 
public string status{get;set;} 
} 

。我有一個風格的一個ListBoxItem我的數據上下文[加2個contentPresenter],以配合我的datacontext,我的意思是每個內容演示內容設置爲「{綁定?}」 - ?可以是姓名,家庭或地位。

我這個DataContext的設置爲ListBoxItem的,但是當我改變的datacontext,它不會顯示

((s)(item.DataContext)).name="change"; 

但我看到,沒有什麼改變。

我谷歌它但大多數的問題是有點不同,我的。

問候, PK DEVELOPER

回答

2

除了使用的ObservableCollection,你也需要實現INotifyPropertyChanged界面爲你s類也,你的WPF窗口的元素綁定使用數據綁定s類的屬性。

下面是關於如何實現INotifyPropertyChanged細節:

http://msdn.microsoft.com/en-us/library/ms743695.aspx

,並在Databnding Overview on MSDN

+0

如果此對象位於ObservableCollection中,它不需要INotify,但是如果它不是那麼實現INotify – MyKuLLSKI

+1

@MyKuLLSKI INotifyPropertyChanged必須實現爲ObservableCollection在集合中的任何屬性發生更改時不會提供任何通知。請參閱:http://www.codeproject.com/KB/silverlight/SLListVsOCollections.aspx – VS1

+0

Um ... ObservableCollection實現INotify。那麼簡單:http://stackoverflow.com/questions/5123537/mvvm-observablecollection-question – MyKuLLSKI

2

執行以下操作:

  1. 設置列表框的父元素的的DataContext到一個ObservableCollection()SCollection或該
  2. 設置列表框的的ItemSource到{Binding}如果你設置DataContext爲這個然後使用{綁定SColection}
  3. 添加項目到ObservableCollection和列表框將自動更新
  4. 然後,只需修改中的ObservableCollection項目,而不是列表框
+0

我會用一個ObservableCollection太:)。確保INotify屬性已設置並且事件也啓動。 – Mixxiphoid

0

其實我真的不明白你的問題?你想有一個Listbox顯示s類型的對象列表?如果是這樣的話,我會去DataTemplates,如我在this question的回答。

或者您是否有特殊情況,迫使您直接爲每個ListBoxItem設置一個bindung?

+0

爲每個ListBoxItem設置綁定 – Peyman

相關問題