TableView selectedItem绑定到 ViewModel ,我想在selectedItem null 时禁用按钮,否则启用。
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
映射到自定义可观察对象? (只是另一个想法)
答案 0 :(得分:3)
可观察值有一个函数,当它们不包含值时会返回BooleanBinding
,并且由于您已经将所选项目绑定到model.selectedSubtitle
,因此您可以简单地在按钮构建器中添加以下表达式:
enableWhen(model.selectedSubtitle.isNotNull)
如果您没有将TableView的选定项绑定到视图中可访问的属性,则可以直接存储对表的引用并绑定到表的选择模型中的状态:
enableWhen(table.selectionModel.selectedItemProperty().isNotNull)
另一方面,您可以通过删除init
块来清理语法,并直接使用构建器声明根节点:
override val root = tableview(subs) {
...
}
希望这会有所帮助:)