在 TornadoFX 中,如何在更改其他属性时进行一个 属性 更改?

In TornadoFX, how can I make one Property change when other properties are changed?

例如,我想这样做:我有一个 StringProperty,它是 IntegerProperty 和另一个 StringProperty 的组合,如下所示:

如何 "bind" 属性,以便在更改 A 或 B 时更改 C? (请注意,我不想对 C 所做的更改做出反应)

我尝试使用 stringBinding() 方法,但我不清楚该方法的具体工作原理,而且相关文档也不清楚。

stringBinding就是你想要的。第一个参数将在计算块内变为 this,如果 this 是一个可观察值,它将作为依赖项添加,用于计算何时应重新评估字符串绑定。其余参数(此处仅 b)也作为 re-evaluation 依赖项添加。

如果您这样做 stringBinding(a, b) { "${a.value} ${b.value}" },您就创建了一个字符串绑定,只要 ab 发生变化,该绑定就会更新。由于在上面的例子中 thisa,你也可以写成 stringBinding(a, b) { "${this.value} ${b.value}" },但我认为这不会使它更清楚:)

我们决定将第一个元素设为 this 的原因通过以下示例更加明显:

val sizeDescription = bind(items) { "$size elements in list" }

在这里你不需要再次引用 items 来得到它的 size 属性.