0

私のUIには2つのテキストフィールドと2つのボタンがあります.jfaceデータバインディングを使用してテキストフィールドをバインドしています.検証を行っています.検証の成功に応じてモデルが更新されます.ボタンが欲しいそれに応じて応答します。モデルが更新されていない場合と同様に、ボタンを無効にしたいです。ハードコーディングをしたくないもう1つのことです。

他の方法では、ボタンをテキストフィールドにバインドして、テキストフィールドに不要な値がある場合にボタンを無効にする必要があります。他の方法では、テキストフィールドでデータバインディングを行っています。モデルを更新しないよりも適切な値がありません。次に、値が適切でないときにボタンを無効にしたいのですが、それを行うことができますか。

4

2 に答える 2

0

いくつかの調査の後、ボタンの有効化/無効化プロパティを観察し、現在の emf データバインディング コンテキストにバインドする必要があることがわかりました。私が使用した機能の詳細を以下に示します。

void bindEnablementButtonToValidationStatus(Button button, EMFDataBindingContext ctx) {

    IObservableValue buttonEnable = SWTObservables.observeEnabled(button);
    IObservableValue validationStatus = new AggregateValidationStatus(
            ctx.getValidationRealm(),
            ctx.getBindings(), 
            AggregateValidationStatus.MAX_SEVERITY);

    ctx.bindValue(buttonEnable, validationStatus, 
            new EMFUpdateValueStrategy(
                    UpdateValueStrategy.POLICY_NEVER), 
                    new EMFUpdateValueStrategy().setConverter(
                            new Converter(IStatus.class, Boolean.TYPE) {
                                public Object convert(Object fromObject) {
                                    return new Boolean(((IStatus)fromObject).isOK());
                                }
                            }));

}

于 2014-03-25T04:03:42.363 に答える
0

以下のリスナーを利用できます。リスナーをあなたに追加するObservable

 org.eclipse.core.databinding.observable.value.IValueChangeListener
于 2013-04-11T14:38:15.683 に答える