从listbox外部的节点修改listbox的子节点的属性

从listbox外部的节点修改listbox的子节点的属性

注意以下的结构,Grid List Box 在onProjectLoaded 中就已经初始化好了,但是Trajectory List Box 没有,在绘制之前才开始初始化好。


Listbox的结构

我们在kanzi studio 创建listbox的子节点,kanzi engine初始化的时候会创建一个新的树形结构来排列listbox的子节点。具体的结构如下

Grid List Box 2D 的结构

我们为Grid List Box 2D 创建一个Text Block 2D 的子节点,从Grid List Box 2D 访问 Text Block 2D 的path为

./Kanzi Scroll View (Grid List Box)/Kanzi Grid Layout (Grid List Box)/Text Block 2D (List Box Item)/Text Block 2D

子节点的名字改变的时候,替换上面黄色部分即为新的路径

Grid List Box的结构

我们为Grid List Box 3D 创建一个Text Block 3D 的子节点,从Grid List Box 3D 访问 Text Block 3D 的path 为

./Kanzi Scroll View (Grid List Box)/Kanzi Grid Layout (Grid List Box)/Text Block 3D (List Box Item)/Text Block 3D

Trajectory List Box 的结构

我们为Trajectory List Box 3D创建一个Sphere子节点,从Trajectory List Box 3D 访问Sphere子节点的path为

./Kanzi Scroll View (Trajectory List Box)/Kanzi Trajectory Layout (Trajectory List Box)/Sphere (List Box Item)/Sphere

 

从List Box 外部访问子节点的属性

上面我们介绍了List Box真实的结构和路径,但是不建议使用这么复杂的路径来访问,kanzi 提供了更简单的方式来访问。

首先把要访问的子节点的属性绑定到外部,绑定的时候使用alias,然后修改外部绑定的值即可修改listbox里面的值



所以,假如我们要修改listbox里面节点subnode的valueInt的值,我们先在listbox外部节点假如datanode上添加一个valueInt,给datanode

创建一个alias: datanode, 这样我们先把subnode的valueInt绑定到datanode的valueInt({#datanode/valueInt}),这样我们只要修改datanode的valueInt

就达到修改subnode的valueInt值的目的了