2017-11-15 7 views
1

テーブルビューのSelectedItemはViewModelにに結合しているとのSelectedItemがヌルで、そうでない場合は有効にしたとき、私は無効にするボタンにしたいです。ボタンenableWhenテーブルビューのSelectedItemはありません空

class MainView: View("TheSubberKt") { 
    override val root = Form() 
    val model = MainViewModel() 

    init { 
    with(root) { 
     fieldset { 
     field("Media:") { 
      textfield(model.mediaPath) 
      button("...") 
     } 
     } 
     tableview(subs) { 
     // ... 
     bindSelected(model.selectedSubtitle) 
     } 
     hbox { 
     button("Hash Search") 
     button("Download Selected") { 
      // what to do here? 
     } 
     } 
    } 
    } 
} 

私はそれを行う方法を、私はOvservableValue<Boolean>を作成し、enableWhenに渡す必要があることを想像しますが?

プロパティonChangeをカスタム観測可能にマップすることはできますか?

答えて

2

観測可能な値には、値が含まれていない場合はBooleanBindingが返され、既に選択したアイテムはmodel.selectedSubtitleにバインドされているため、次の式をボタンビルダー:

enableWhen(model.selectedSubtitle.isNotNull)

あなたがビューでアクセスプロパティにテーブルビューの選択した項目を結合しなかった場合は、直接テーブルへの参照を格納し、テーブルの選択状態に結合することができますモデル:

enableWhen(table.selectionModel.selectedItemProperty().isNotNull)別のノートで

、あなたはinitブロックを取り除くことによって、あなたの構文をクリーンアップすることができますし、ビルダーと直接ルートノードを宣言:

override val root = tableview(subs) { 
    ... 
} 

ホープ、このことができます:)

関連する問題