簡體   English   中英

E4 SWT列表的數據綁定

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM