例如,我想这样做:我有一个 StringProperty,它是一个 IntegerProperty 和另一个 StringProperty 的组合,如下所示:
- 字符串属性 A = "foo"
- 整数属性 B = 3
- 结果 StringProperty C = "foo 3"
如何“绑定”属性,以便在更改 A 或 B 时更改 C?(请注意,我不想对 C 所做的更改做出反应)
我尝试使用stringBinding()
方法,但我不清楚这种方法是如何工作的,关于它的文档也不清楚。
例如,我想这样做:我有一个 StringProperty,它是一个 IntegerProperty 和另一个 StringProperty 的组合,如下所示:
如何“绑定”属性,以便在更改 A 或 B 时更改 C?(请注意,我不想对 C 所做的更改做出反应)
我尝试使用stringBinding()
方法,但我不清楚这种方法是如何工作的,关于它的文档也不清楚。
stringBinding
是你想要的。第一个参数将this
在计算块内,如果this
是可观察值,它将作为依赖项添加,用于计算何时应重新计算字符串绑定。其余参数(仅b
在此处)也作为重新评估依赖项添加。
如果你这样做stringBinding(a, b) { "${a.value} ${b.value}" }
了,你已经创建了一个字符串绑定,它会在任何一个a
或b
改变时更新。既然this
在a
上面的例子中,你也可以写进去,stringBinding(a, b) { "${this.value} ${b.value}" }
但我认为这不会让它更清楚:)
通过以下示例,我们决定制作第一个元素的原因this
更加明显:
val sizeDescription = bind(items) { "$size elements in list" }
在这里,您无需items
再次引用即可获得它的size
属性。