TornadoFX cómo enlazar Node style (o styleClass) a una propiedad?

Considere el siguiente ejemplo:

class MainView : View("Example") { val someBooleanProperty: SimpleBooleanProperty = SimpleBooleanProperty(true) override val root = borderpane { paddingAll = 20.0 center = button("Change bg color") { action { // let's assume that new someBooleanProperty value is updated // from some API after button clicked // so changing style of the borderpane in action block // of the button is not the solution someBooleanProperty.value = !someBooleanProperty.value } } } } class Styles : Stylesheet() { companion object { val networking by cssclass() val green by cssclass() } init { networking { backgroundColor += Color.RED } green { backgroundColor += Color.GREEN } } } 

¿Cómo puedo cambiar dinámicamente el color de background del borderpane function de someBooleanProperty de someBooleanProperty (por ejemplo, ROJO cuando es true y VERDE cuando es false )? ¿Hay posibilidad de vincular la class CSS a una propiedad? ¿Hay alguna solución para hacer eso sin usar CSS (es decir, dentro de bloque de style , etc.)

Si desea alternar una class (agregar o eliminar una class basada en una propiedad booleana), puede usar la function Node.toggleClass(CssRule, ObservableValue<Boolean>) .

 val someBooleanProperty = SimpleBooleanProperty(true) ... borderpane { toggleClass(Styles.networking, someBooleanProperty) toggleClass(Styles.green, someBooleanProperty.not()) } 

Si, por otro lado, desea vincularse a un valor de class cambiante, puede usar la function Node.bindClass(ObservableValue<CssRule>) .

 val someClassyProperty = SimpleObjectProperty(Styles.networking) ... borderpane { bindClass(someClassyProperty) } 

A continuación, puede configurar la class a lo que desee.

  • ¿Cómo llenar el ancho de la tabla disponible con columnas?
  • En TornadoFX, ¿cómo puedo vincular las properties de BigDecimal a otra propiedad de BigDecimal usando objectBinding?
  • El elemento TornadoFx ItemViewModel es nulo
  • Enlace de un model de dominio con campos anulables en ItemViewModel
  • Tornadofx Javafx - Cómo volver a cargar una vista / componente
  • ¿Cómo puedo crear un encabezado de columna nested / dividido usando TornadoFx?
  • tornadofx EventBus expande la fila de la tabla usando el object tableview
  • En TornadoFX, ¿cómo puedo hacer que una propiedad cambie cuando cambian otras properties?
  • TornadoFX ¿Cómo crear MDI con una list de models de windows hijas?
  • TornadoFx: que realiza mejor FXML o type-CSS
  • Lanzar una aplicación TornadoFX desde (un progtwig existente) de Kotlin