在tornadoFX中是否可以将ListView绑定(bind)到ListProperty?

我有一个如下的ViewModel:

class MyVm: ItemViewModel<Item>() {
    val stringProperty = bind { item?.myString?.toProperty() }
}

class MyView: View() {
    ...
    init {
        with (root) {
            label(myVm.stringProperty)
        }
    }
}

如果项目更改为vm.item = Item(...),则stringProperty将相应地更新,这将更新所有绑定(bind)的标签等。

现在,我想对ListView做同样的事情:
class MyVm: ItemViewModel<Item>() {
    val listProperty = bind { item?.myList?.toProperty() }
}

class MyView: View() {
    ...
    init {
        with (root) {
            listview {
                items = myVm.listProperty
            }
        }
    }
}

但是在这种情况下,编译器会抱怨listview.items需要ObservableList而不是ListProperty

最佳答案

将绑定(bind)定义为ListProperty并将listProperty传递给listview构建器:
val listProperty = bind(Item::myList) as ListProperty<YourType>
..
listview(myVm.listProperty)

关于javafx - 将ListView绑定(bind)到ListProperty,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50260206/

10-09 05:12