Data binding javafx中的数据绑定是否仅在变量声明期间才可能?

Data binding javafx中的数据绑定是否仅在变量声明期间才可能?,data-binding,javafx,Data Binding,Javafx,查看javafx教程和示例,总是在varibale声明期间进行绑定: def y = bind x; 或 但是,如果我有一个存在的对象——因此没有声明它——并且想要绑定它的一个属性,我该怎么办呢。在本例中,我使用FXDLoader加载一个SVGPath,然后希望将SVGPath.visible绑定到一个变量。我怎样才能做到这一点 var data = true; var fxdContent = FXDLoader.load("{__DIR__}plan.fxz"); var sc = fxd

查看javafx教程和示例,总是在varibale声明期间进行绑定:

def y = bind x;

但是,如果我有一个存在的对象——因此没有声明它——并且想要绑定它的一个属性,我该怎么办呢。在本例中,我使用FXDLoader加载一个SVGPath,然后希望将SVGPath.visible绑定到一个变量。我怎样才能做到这一点

var data = true;
var fxdContent = FXDLoader.load("{__DIR__}plan.fxz");
var sc = fxdContent.lookup("SC0013") as SVGPath;
sc.visible = bind data; //That doesn't work

您可以使用替换触发器,例如

var fxdContent = FXDLoader.load("{__DIR__}plan.fxz");
var sc = fxdContent.lookup("SC0013") as SVGPath;
var data = true on replace {
    sc.visible = data;
}
您还可以执行以下操作:

def data = bind sc.visible with inverse;

这将为您提供两个变量之间的双向更新。根据,您不能在其他任何地方使用“bind”。

是的,您只能在声明变量时绑定它。

谢谢!真管用!不过,我还是对bind问题感兴趣。我更新了答案,加入了另一个可能的解决方案以及语言规范中相关章节的链接。感谢第二个解决方案。我不知道那个。我也不知道语言规范,只知道javafx.com;)
def data = bind sc.visible with inverse;