Binding.scala FXML:如何填充ObservableList属性

Binding.scala FXML:如何填充ObservableList属性,scala,javafx,binding.scala,Scala,Javafx,Binding.scala,我有这样的代码: val state = Var(initialState) // ... type SavedSearchCmb = ComboBox[SavedSearch] val savedSearchesCmb: Binding[SavedSearchCmb] = <SavedSearchCmb> <items> {state.bind.savedSearches} </items> </SavedSear

我有这样的代码:

val state = Var(initialState)

// ...
type SavedSearchCmb = ComboBox[SavedSearch]
val savedSearchesCmb: Binding[SavedSearchCmb] =
  <SavedSearchCmb>
    <items>
      {state.bind.savedSearches}
    </items>
  </SavedSearchCmb>
val state=Var(initialState)
// ...
键入SavedSearchCmb=组合框[SavedSearch]
val savedSearchesCmb:绑定[SAVEDSEARCCMB]=
{state.bind.savedSearches}
编译器抱怨

[错误]找到:Seq[com.dev1on1.timer.YouTrackAPI.SavedSearch]
[错误]必需:javafx.collections.ObservableList[com.dev1on1.timer.YouTrackAPI.SavedSearch]
[错误]
生成项目的正确方法是什么?

根据:

只读列表属性是一个Bean属性,其getter返回
java.util.list
的实例,并且没有相应的setter方法。只读列表元素的内容在处理时会自动添加到列表中

items
SavedSearchCmb
的列表属性,但是,它不是只读的,因为有一个setter。因此,以前版本的Binding.scala确实会将
savedSearches
的内容附加到
items
属性,而是尝试通过
setItems
常量分配给
items

也就是说,根据规范,Binding.scala以前的行为完全正确


FXML行为非常不方便

幸运的是,Binding.scala不必支持与Oracle的
javafx.fxml.fxmloader
完全相同的语法

我决定打破规范,允许将数据绑定表达式的内容附加到任何列表属性,不管它是只读的还是非只读的

这一变化已包括在报告中。如果升级到Binding.scala 11.0.1,则应编译代码


我们可以做得比原来的FXML规范更好。这就是为什么您选择Binding.scala而不是
javafx.fxml.fxmloader

谢谢。如果我有一个
BindingSeq
,而不是一个Seq呢?我想我可以做
.all.bind
,然后wrap?
.all.bind
编译,但失去了部分更新的能力,所以理想情况下可以将BindingSeq转换为一个保留部分更新行为的可观察列表,有从
Seq
BindingSeq
observeList
的自动转换。如果它不起作用,您能否最小化您的示例并在Binding.scala的问题跟踪器上报告它?
[error]  found   : Seq[com.dev1on1.timer.YouTrackAPI.SavedSearch]
[error]  required: javafx.collections.ObservableList[com.dev1on1.timer.YouTrackAPI.SavedSearch]
[error]         <items>