0

我正在尝试在 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)

我希望能够在类中的任何地方使用注入和绑定,而无需传递参数。我需要怎么做?非常感谢你的帮助

4

0 回答 0