1

TableView selectedItem 绑定到ViewModel,我想在 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到自定义可观察对象?(只是另一个想法)

4

1 回答 1

3

可观察值具有一个函数,BooleanBinding当它们不包含值时将返回 ,并且由于您已经将所选项目绑定到model.selectedSubtitle,您可以简单地在按钮构建器中添加以下表达式:

enableWhen(model.selectedSubtitle.isNotNull)

如果您没有将 TableView 的选定项绑定到视图中可访问的属性,则可以直接存储对表的引用并绑定到表的选择模型中的状态:

enableWhen(table.selectionModel.selectedItemProperty().isNotNull)

另一方面,您可以通过摆脱init块并直接使用构建器声明根节点来清理语法:

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

希望这可以帮助 :)

于 2017-11-15T08:21:52.957 回答