【问题标题】:How to update ListBoxItem [with datacontext]如何更新 ListBoxItem [with datacontext]
【发布时间】:2012-02-14 19:08:40
【问题描述】:

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

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

我已经为 listBoxItem [添加了 2 个 contentPresenter] 制作了一个样式以匹配我的数据上下文,我的意思是每个内容演示者的内容都设置为“{Binding ?}”-?可以是姓名、家庭或身份-。

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

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

但我发现没有任何改变。

我用谷歌搜索,但大多数问题与我的有点不同。

问候, PK开发者

【问题讨论】:

    标签: wpf data-binding datacontext inotifypropertychanged


    【解决方案1】:

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

    以下是如何实现INotifyPropertyChanged的详细信息:

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

    还有Databnding Overview on MSDN

    【讨论】:

    【解决方案2】:

    执行以下操作:

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

    【讨论】:

    • 我也会使用 ObservableCollection :)。确保设置了 INotify 属性并且事件也启动了。
    【解决方案3】:

    其实我不太明白你的问题?你想要一个Listbox 来显示s 类型的对象列表吗?如果是这种情况,我会选择DataTemplates,就像我对this question 的回答一样。

    或者你有什么特殊情况,迫使你直接为每个ListBoxItem设置一个绑定?

    【讨论】:

    • 为每个 ListBoxItem 设置绑定
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-02-14
    • 2011-01-03
    • 1970-01-01
    • 2012-05-20
    • 1970-01-01
    • 2014-01-02
    • 1970-01-01
    相关资源
    最近更新 更多