如何打开在 TornadoFX 中打开的多个编辑器视图
How to open multiple editor views open in TornadoFX
我一直在遵循指南 here,其中提供了一个使用 ViewModel 的编辑器示例。
我希望改变这一点,这样每个对象都将调出自己单独的编辑器,而不是返回到每个域对象进行编辑的单个编辑器。
我想继续使用 ViewModel,因为我喜欢它们提供的分离以及它们所具有的 API(轻松回滚/保存)。
我应该如何处理打开每个域对象的编辑器(尤其是在 TornadoFX 方式中)?
解决方案是为新编辑器创建一个新范围并将相关模型插入到该新范围中。如果您使用的是工作区,则可以使用 dockInNewScope
:
等内置函数来完成
workspace.dockInNewScope<MyEditor>(myModel1, myModel2, etc)
如果您不使用 Workspace,您可以手动创建一个新范围,将模型放入其中并在新范围中查找视图:
val newScope = Scope(myModel1, myModel2)
find<MyEditor>(newScope).openWindow()
MyEditor
在这种情况下会在其范围内看到 myModel
和 myModel2
,以便它可以注入它们。
我一直在遵循指南 here,其中提供了一个使用 ViewModel 的编辑器示例。
我希望改变这一点,这样每个对象都将调出自己单独的编辑器,而不是返回到每个域对象进行编辑的单个编辑器。
我想继续使用 ViewModel,因为我喜欢它们提供的分离以及它们所具有的 API(轻松回滚/保存)。
我应该如何处理打开每个域对象的编辑器(尤其是在 TornadoFX 方式中)?
解决方案是为新编辑器创建一个新范围并将相关模型插入到该新范围中。如果您使用的是工作区,则可以使用 dockInNewScope
:
workspace.dockInNewScope<MyEditor>(myModel1, myModel2, etc)
如果您不使用 Workspace,您可以手动创建一个新范围,将模型放入其中并在新范围中查找视图:
val newScope = Scope(myModel1, myModel2)
find<MyEditor>(newScope).openWindow()
MyEditor
在这种情况下会在其范围内看到 myModel
和 myModel2
,以便它可以注入它们。