6

我正在继承标准 ListBox 控件。我会收到有关添加到列表中的任何元素的更改的通知。任务是更新 ListBox 为变化的元素显示的文本。

我知道我可以删除更改的元素并再次添加它,但由于明显的原因,这似乎并不可取。

4

2 回答 2

16

不幸的是,数据绑定ListView不支持常规(项目)更改通知事件(FooChanged/ INotifyPropertyChanged)。但是,如果您知道更改,您可以让列表重新绑定自身。由于您是子类化,您可以调用:

this.RefreshItems();

或单个项目:

this.RefreshItem(index);

否则,由于这不是公开的,您可以通过更改来模拟它DisplayMember

lb.DisplayMember = "";
lb.DisplayMember = "Bar";

也许有点 hacky,但它可以工作,并保持当前的选择等(不像清除DataSource)。

于 2009-02-06T08:31:16.050 回答
1

为什么不手动更新相关项目的文本?您也可以考虑为 ListBox 推出自己的数据绑定机制。并检查ObjectListView看看它是否有帮助。

于 2009-02-06T08:26:30.647 回答