[英]E4 Databinding for SWT List
我嘗試通過數據綁定將SWT 列表的項目綁定到List <String>屬性。
我的模特班:
public class Config extends ModelObject {
private List<String> tagList;
public List<String> getTagList() {
return tagList;
}
public void setTagList(List<String> tagList) {
firePropertyChange("tagList", this.tagList, this.tagList = tagList);
}
}
我的綁定:
...
private List tagList;
...
private void addDataBinding() {
Config config = ConfigHandler.getInstance().getConfig();
DataBindingContext ctx = new DataBindingContext();
IObservableList observableModelTagList = BeanProperties.list(Config.class, "tagList").observe(config);
IObservableList observableWidgetTagList = WidgetProperties.items().observe(tagList);
ctx.bindList(observableWidgetTagList, observableModelTagList);
}
由於無法解決問題,因此我嘗試使用Converters 。
它也不起作用,但是至少我可以看到,如果我在tagList 窗口小部件上使用tagList.add(x)或tagList.setItems(x) ,則什么都不會觸發(甚至不會調用convert方法)。
因此,我猜WidgetProperties.items()無法正常工作。
我希望它會在每次更改項時觸發更改,以便在添加,刪除和新設置時進行更改。
如何將SWT列表綁定到模型中的List屬性?
您可以使用ListViewer
而不是List
:
ListViewer viewer = new ListViewer(tagList);
IValueProperty displayValue = ... property to display in the list
ViewerSupport.bind(viewer, observableModelTagList, displayValue);
沒有“ displayValue”,您可以使用:
ListViewer viewer = new ListViewer(tagList);
ObservableListContentProvider contentProvider = new ObservableListContentProvider();
viewer.setContentProvider(contentProvider);
viewer.setLabelProvider(new LabelProvider());
viewer.setInput(observableModelTagList);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.