以编程方式触发切片器选择上的 DataBinding 执行

Programatically trigger DataBinding execution on Slider Selection

我的 E4 应用程序中有一个 Databinding between a Widget (Slider) 和一个模型(整数值)。

如果我启动应用程序并移动 Slider, the Model value gets updated properly, so the Databinding 作品。 但是如果我设置 Slider Selection via the setSelection method, the Databinding 不执行,那么模型值就不会更新。

我像其他所有设置方法一样尝试过,但没有任何效果。如何更改代码中的 Slider 值,以便更新模型?

Databinding(Part 的 postConstruct 方法内部):

protected Slider penaltyPercent;    

...

// Bind penaltyPercent  
IObservableValue observableModelPenaltyPercent = BeanProperties.value(
        Config.class, "penaltyPercent").observe(config);
IObservableValue observableWidgetPenaltyPercent = WidgetProperties
        .selection().observe(penaltyPercent);
ctx.bindValue(observableWidgetPenaltyPercent,
        observableModelPenaltyPercent);

模特:

public class Config extends ModelObject {
    private int penaltyPercent;

    public int getPenaltyPercent() {
        return penaltyPercent;
    }

    public void setPenaltyPercent(int penaltyPercent) {
        if (penaltyPercent >= 0 && penaltyPercent <= 100) {
            firePropertyChange("penaltyPercent", this.penaltyPercent,
                this.penaltyPercent = penaltyPercent);
        }
    }
}

将选择事件通知控件的侦听器可能就足够了:

Event event = new Event();
event.widget = penaltyPercent;
event.display = penaltyPercent.getDisplay();
event.type = SWT.Selection;

penaltyPercent.notifyListeners(SWT.Selection, event);

您可能需要在活动中填写更多字段。