我用下面的代码(一些细节省略)标签的文本值绑定到我的后端模式:Eclipse RCP的数据绑定:标签的文本进行更新,大小不
Model model = entry.getModel();
Control nameControl = formToolkit.createLabel(labelPanel, null);
IObservableValue modelValue = BeanProperties.value(model.getClass(), Model.PROPERTY_NAME).observe(model);
IObservableValue widgetValue = SWTObservables.observeText(nameControl);
DataBindingContext context = new DataBindingContext();
UpdateValueStrategy widgetToModel = new UpdateValueStrategy(UpdateValueStrategy.POLICY_NEVER);
UpdateValueStrategy modelToWidget = new UpdateValueStrategy(UpdateValueStrategy.POLICY_UPDATE);
context.bindValue(widgetValue, modelValue, widgetToModel, modelToWidget);
当模型被改变,标签的文本更新得当。但标签不会调整大小。因此,当模型更改为更长的名称时,新名称将被切断。当它更改为较短的名称时,标签占用的空间比应该多。
我想添加一个属性更改侦听器(无论是模型名称还是标签文本),只要名称被更改就会在标签的父级上调用layout
,但是这不会破坏数据绑定的目的吗?
您在包含复合材料时使用了哪种布局,以及将什么传递给.setLayoutData作为参数? – 2012-07-24 18:45:21
我在容器上使用'RowLayout',我没有明确地在标签上设置任何布局数据。 – user1155252 2012-07-25 18:14:45