我正在尝试在 tornadofx 应用程序中使用 kodein,在阅读https://docs.kodein.org/kodein-di/7.10/framework/tornadofx.html后,我尝试在视图中绑定对象,这是我的代码:
hbox(5) {
val label = label("Name:")
this@root.kodeinDI {
bind("nameLabel") {
singleton {
label
}
}
}
textfield()
alignment = Pos.CENTER
}
hbox(5) {
val label = label("Pass:") {
val label: Label by this@root.kodeinDI().instance("nameLabel")
prefWidthProperty().bind(label.widthProperty())
}
this@root.kodeinDI {
bind("passLabel") {
singleton {
label
}
}
}
textfield()
alignment = Pos.CENTER
}
它有这个错误:
java.lang.IllegalArgumentException: There is already a DI container for the node BorderPane@1a94ea08
at org.kodein.di.tornadofx.ClosestKt.addKodeinDIProperty(closest.kt:43)
at org.kodein.di.tornadofx.ClosestKt.kodeinDI(closest.kt:31)
at com.example.tfx.UI.MainView$root$1$1$1$3.invoke(MainView.kt:46)
at com.example.tfx.UI.MainView$root$1$1$1$3.invoke(MainView.kt:41)
我希望能够在类中的任何地方使用注入和绑定,而无需传递参数。我需要怎么做?非常感谢你的帮助