1

TableViewerをにバインドしようとしています

models = List<ModelObject>

、しかし私は本当にそれのコツをつかまえません。バインディングはmaster-detailとデータバインディングコンテキスト(DataBindingContext)を介して可能である必要があります。これにより、要求があった場合(dbcがPOLICY_ON_REQUESTに設定されている場合)にのみ、リスト(およびその要素)の変更をモデルに書き込むことができます。エディターの保存アクションで。単純なテキストフィールドでは、これは魅力のように機能しますが、TableViewersの同様の例は見つかりません。ViewerSupportのインスタンスのAPIを見ると、バインドすることしかできませんが、DBCまたはマスター詳細を指定するオプションはありません。これは機能します:

ViewerSupport.bind(aViewer, new WritableList(models, ModelObject.class), BeanProperties.value(ModelObject.class, "name")));

ただし、前述のように、dbcもmaster-detailも使用できません。

それに対する解決策はありますか、それともTableViewerは使用するつもりなのでデータバインディングをサポートしていませんか?回避策や見逃したAPIはありますか?

事前に回答をお願いします!

4

1 に答える 1

0

もう少し詳しく見てみると、master-detail の使用方法がわかりました。

tmp = BeansObservables.observeDetailList(masterObservable,
                            "name", ModelObject.class)
ViewerSupport.bind(aViewer, tmp, BeanProperties.value(ModelObject.class, "name")));

ユーザーの要求に応じて保存できるように、リストとリスト要素を直接永続化しない方法 (つまり、POLICY_ON_REQUEST) を変更する方法が残っています。より具体的には、DataBindingContext をどこかに挿入するにはどうすればよいですか...

于 2010-08-09T10:13:55.893 に答える