Ich benutze TornadoFX 1.7.5 und ich kann nicht scheinen, gebundene Eigenschaften zu funktionieren. Ich habe die unten ItemViewModelsGebundene Eigenschaften nicht funktioniert
class DynamicMenuViewModel : ItemViewModel<DynamicMenu>(DynamicMenu()) {
val title = bind { item?.title?.toProperty() }
val isBold = bind { item?.isBold?.toProperty() }
val routes = bind { item?.routes?.toProperty() }
}
data class DynamicMenu(var title: String = "", var isBold: Boolean = false, var routes: MutableList<MenuRouteViewModel> = mutableListOf())
class MenuRouteViewModel : ItemViewModel<MenuRoute>(MenuRoute()) {
val url = bind { item?.url?.toProperty() }
val title = bind { item?.title?.toProperty() }
val isBold = bind { item?.isBold?.toProperty() }
val showNew = bind { item?.showNew?.toProperty() }
}
data class MenuRoute(var url: String = "", var title: String = "", var showNew: Boolean = false, var isBold: Boolean = false)
die wie folgt gebunden sind:
//routesController.dynamicMenu is an instance of DynamicMenuViewModel()
textfield(property = routesController.dynamicMenu.title) {
prefWidth = formWidth * .5
gridpaneConstraints {
columnRowIndex(0, 1)
marginLeft = 10.0
columnSpan = 2
marginBottom = 20.0
}
}
checkbox(property = routesController.dynamicMenu.isBold){
gridpaneConstraints {
columnRowIndex(2, 1)
marginLeft = 15.0
marginBottom = 20.0
}
}
Dann werden die folgenden Funktionen verpflichten, die Modelle und druckt sie auf dem Bildschirm, wenn ich auf eine Schaltfläche klicken:
fun onClick(){
commitModel()
println(dynamicMenu.item.toString())
dynamicMenu.item.routes.forEach {
println(it.item.toString())
}
}
fun commitModel(){
dynamicMenu.item.routes.forEach {
it.commit()
}
dynamicMenu.commit()
}
Das Problem ist, dass, wenn ich das Programm ausführen und die Textfelder und Kontrollkästchen bearbeiten, dann klicken Sie auf die Schaltfläche, die onClick()
ausgeführt wird, scheint die Sicherung Element nicht aktualisiert werden d. Daher wird keiner der aktualisierten Werte auf der Konsole ausgegeben.
Was mache ich hier falsch?