我想将索引属性绑定到 JFace ComboViewer。
假设我有一个这样的 DataModel 类:
class DataModel {
private String[] props = {"A","B","C"};
private PropertyChangeSupport pcs = new PropertyChangeSupport(this);
public String getProperties( int idx ){
return props[idx];
}
public void setProperties( int idx, String value ){
String oldVal = props[idx];
props[idx] = value;
pcs.fireIndexedPropertyChange( "properties", idx, oldVal, value );
}
// code to add/remove PropertyChangeListener
// ...
}
简单属性的数据绑定代码如下所示:
DataModel dataModel = ...
ComboViewer propertyChoice = ...
DataBindingContext ctx = new DataBindingContext();
IObservableValue target = ViewerProperties.singleSelection().observe( propertyChoice );
IObservableValue model = BeanProperties.value( DataModel.class, "properties" ).observe(dataModel);
ctx.bindValue( target, model );
但是对于索引属性,我必须通知 ctx 哪个索引是我要绑定的值。我努力了
IObservableValue model = BeanProperties.value( DataModel.class, "properties[0]" ).observe(dataModel);
但它不起作用。
是否可以绑定索引属性而不是简单属性?如何?