我正在继承标准 ListBox 控件。我会收到有关添加到列表中的任何元素的更改的通知。任务是更新 ListBox 为变化的元素显示的文本。
我知道我可以删除更改的元素并再次添加它,但由于明显的原因,这似乎并不可取。
我正在继承标准 ListBox 控件。我会收到有关添加到列表中的任何元素的更改的通知。任务是更新 ListBox 为变化的元素显示的文本。
我知道我可以删除更改的元素并再次添加它,但由于明显的原因,这似乎并不可取。
不幸的是,数据绑定ListView
不支持常规(项目)更改通知事件(FooChanged
/ INotifyPropertyChanged
)。但是,如果您知道更改,您可以让列表重新绑定自身。由于您是子类化,您可以调用:
this.RefreshItems();
或单个项目:
this.RefreshItem(index);
否则,由于这不是公开的,您可以通过更改来模拟它DisplayMember
:
lb.DisplayMember = "";
lb.DisplayMember = "Bar";
也许有点 hacky,但它可以工作,并保持当前的选择等(不像清除DataSource
)。
为什么不手动更新相关项目的文本?您也可以考虑为 ListBox 推出自己的数据绑定机制。并检查ObjectListView看看它是否有帮助。