如何更新ListBoxItem [with datacontext]

时间:2012-01-20 06:40:37

标签: wpf data-binding datacontext inotifypropertychanged

我有以下课作为我的数据上下文

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

我为listBoxItem创建了一个样式[添加了2个contentPresenter]以匹配我的datacontext,我的意思是每个内容展示者的内容都设置为“{Binding?}” - ?可以是姓名,家庭或地位 - 。

我将此datacontext设置为ListBoxItem,但是当我更改datacontext时,它将不会显示

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

但我发现没有任何改变。

我支持谷歌,但大多数问题与我的有点不同。

此致 PK开发者

3 个答案:

答案 0 :(得分:2)

执行以下操作:

  1. 将ListBox的父元素的DataContext设置为ObservableCollection()SCollection或
  2. 如果将DataContext设置为此,则将ListBox的ItemSource设置为{Binding},然后使用{Binding SColection}
  3. 将项目添加到ObservableCollection,ListBox将自动更新
  4. 然后只修改ObservableCollection中的项而不是ListBox

答案 1 :(得分:2)

除了使用ObservableCollection之外,您还需要为类INotifyPropertyChanged实现s接口,并使用类s的属性将WPF窗口的元素绑定到数据绑定。

以下是有关如何实施INotifyPropertyChanged的详细信息:

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

Databnding Overview on MSDN

答案 2 :(得分:0)

其实我真的不明白你的问题?您是否希望Listbox显示s类型的对象列表?如果是这种情况,我会在this question的答案中找到DataTemplates

或者您是否有特殊情况,这会迫使您直接为每个ListBoxItem设置一个绑定?