我有以下类作为我的数据上下文
class s
{
public string name{get;set;}
public string family {get;set;}
public string status{get;set;}
}
我为listBoxItem制作了一个样式[添加了2个contentPresenter],以与我的数据上下文相匹配,我的意思是每个contentPresenters内容都设置为"{Binding?}"-?可以是姓名、家庭或身份。
我将此数据上下文设置为ListBoxItem,但当我更改数据上下文时,它不会显示
((s)(item.DataContext)).name="change";
但我看到一切都没有改变。
我用谷歌搜索了一下,但大多数问题与我的有点不同。
谨致问候,PK开发商
除了使用ObservableCollection,您还需要为类s
实现INotifyPropertyChanged
接口,并使用数据绑定将WPF窗口的元素绑定到类s
的属性。
以下是关于如何实现INotifyPropertyChanged
:的详细信息
http://msdn.microsoft.com/en-us/library/ms743695.aspx
和MSDN 上的Databnding概述
执行以下操作:
- 将ListBox的父元素的DataContext设置为ObservableCollection()SCollection或
- 将ListBox的ItemSource设置为{Binding}如果将DataContext设置为该值,则使用{BindingSColection}
- 将项目添加到ObservableCollection,ListBox将自动更新
- 然后只修改ObservableCollection中的项,而不是ListBox
实际上我真的不明白你的问题吗?是否要有一个显示s
类型对象列表的Listbox
?如果是这样的话,我会选择DataTemplates
,就像我对这个问题的回答一样。
或者您有特殊情况,这迫使您直接为每个ListBoxItem设置绑定?