Data binding 来自EObjects内容的嵌套可观察列表

Data binding 来自EObjects内容的嵌套可观察列表,data-binding,eclipse-emf,emf,eclipse-databinding,Data Binding,Eclipse Emf,Emf,Eclipse Databinding,我有一个具有以下结构的模型(在Xcore中指定): 类网络{ 包含母版[]母版 } 班主任{ 包含从属[]从属 } 类从属{} 我想使用EMF数据绑定来创建网络中所有主节点中所有从属对象的可观察列表 如何做到这一点 或者:我可以创建一个可观察的从属列表的可观察列表吗?即,IObservableList类型的结构 例如,以下操作不起作用: 网络=。。。 IObservableList allSlaves=EMFProperties .list(文本.网络\u主控) .值(文本.主\u从) .观

我有一个具有以下结构的模型(在Xcore中指定):

类网络{
包含母版[]母版
}
班主任{
包含从属[]从属
}
类从属{}
我想使用EMF数据绑定来创建网络中所有主节点中所有从属对象的可观察列表

如何做到这一点

或者:我可以创建一个可观察的从属列表的可观察列表吗?即,
IObservableList
类型的结构


例如,以下操作不起作用:

网络=。。。
IObservableList allSlaves=EMFProperties
.list(文本.网络\u主控)
.值(文本.主\u从)
.观察(网络);

结果列表的类型似乎是
IObservableList
,而不是所需的类型。问题是生成的
IObservableList
具有类
EObjectContainmentEList
的元素,它不是
IObservableList

事实证明,有一种方法可以创建嵌套的可观察列表,不仅针对EMF列表功能,而且针对所有类型的可观察列表

诀窍是将该方法用于返回可观察列表的工厂

Network-Network=TryingFactory.eininstance.createNetwork();
network.getMasters().add(TryingFactory.eINSTANCE.createMaster());
network.getMasters().add(TryingFactory.eINSTANCE.createMaster());
network.getMasters().get(0.getSlaves().add(TryingFactory.eininstance.createSlave());
network.getMasters().get(1.getSlaves().add(TryingFactory.eininstance.createSlave());
network.getMasters().get(1.getSlaves().add(TryingFactory.eininstance.createSlave());
IObservableList masterList=EMFProperties.list(Literals.NETWORK\uu MASTERS)、observe(NETWORK);
IObservableList nestedLists=MasterDetailObservables.detailValues(masterList,
master->Observables.constantObservableValue(masterList.getRealm(),
EMFProperty.list(文本.主/从)。观察(主),
IObservableList.class),
IObservableList.class);
//当嵌套列表从顶级列表中删除时,请处置它们
nestedLists.addListChangeListener(事件->事件.diff.accept(新ListDiffVisitor