绑定 (Bindings)

使用绑定将属性或属性字段的值设置为来自另一个属性、属性字段或数据源的值。

绑定可以让节点、渲染通道、2D 效果、状态、状态对象和样式自动更新其属性的值,以响应属性值的变化或某外部事件的发生。

例如,您可以:

将一个节点的旋转属性字段绑定到某个属性以创建仪表指针,通过该属性可以控制指针。请参阅 教程:创建仪表。

../../_images/binding-rotation.png

将一个节点的位置或大小绑定到另一个节点的位置或大小。请参阅 教程:制作具有动态布局的应用程序。

../../_images/binding-size.png

使用绑定,您可以将您的 Kanzi 项目模块化:

  • 在预设中使用绑定仅提供对那些您希望在预设的不同实例中设置为不同值的属性的访问。请参阅 自定义节点预设件的实例。

  • 使用绑定和数据源将用户界面的呈现与应用程序数据分离,并消除 Kanzi Studio 项目与定义 Kanzi 应用程序的应用程序代码之间的依赖关系。这样,您可以根据 Model-View-Controller 模式构建您的 Kanzi 应用程序。请参阅 数据源 (Data Sources)。

    例如,您可以将用户界面中速度指针的显示绑定到应用程序中表示速度的数据值。请参阅 使用数据源。

最简单的绑定是将节点的一个属性绑定到其自身的一个属性。您还可以将一个节点的属性和属性字段绑定到几个不同节点的属性和属性字段。请参阅 使用绑定。

绑定的组件

绑定具有以下组件:

  • 目标项,可以是节点、渲染通道、2D 效果、状态、状态对象或样式。

  • 目标属性和(可选)属性字段。

  • 由绑定表达式返回的源。

../../_images/components-of-a-binding.svg

源可以是节点、渲染通道、2D 效果、状态、状态对象、样式或数据对象的属性或属性字段。

例如,要使用文本块显示滑块的当前值,可以将 Text Block 节点的 Text (TextConcept.Text) 属性绑定到 Slider 节点的 Value 属性。Text Block 节点是目标项,Text 是目标属性,而 Slider 节点的 Value (RangeConcept.Value) 属性是源。请参阅 教程:创建滑块。

../../_images/binding-example.svg

绑定模式

绑定模式设置绑定中数据流的方向:

  • One way 绑定在源属性的值发生变化时更改目标属性的值。

    在单向绑定中,您可以将目标属性绑定到绑定表达式。请参阅 Bindings expressions 参考。

    ../../_images/binding-modes-one-way.svg

    备注

    当您使用状态管理器、动作或样式设置本地属性值时,会移除任何针对该属性的单向绑定。请参阅 值源绑定。

  • To Source 绑定集:

    在源绑定中,您可以将目标属性绑定到绑定表达式。请参阅 Bindings expressions 参考。

    ../../_images/binding-modes-to-source.svg
  • Two way 绑定在源属性的值发生变化时更改目标属性的值,反之亦然。

    在双向绑定中,您只能将目标属性绑定到源属性。请参阅 创建双向绑定。

    ../../_images/binding-modes-two-way.svg

绑定类型

这些类型的绑定在 Kanzi 中可用:

  • Value Sources

    值源绑定设置整个属性的本地值,并在应用程序运行时为该属性提供值。

    请参阅 值源绑定。

  • Modifiers

    修饰符绑定修改属性值,就像动画或状态管理器一样。

    请参阅 修饰符绑定。

  • To Source

    源绑定将属性值推送到节点或其他项目项,或推送到该项目项使用的资源。

    请参阅 To-source 绑定。

../../_images/properties-binding-types.png

值源绑定

值源绑定设置整个属性的本地值,并在应用程序运行时为该属性提供值。

例如,将 2D 节点的 Layout Height 属性绑定到该节点的 Layout Width 属性,或将 Text Block 2D 节点的 Text 属性绑定到另一个节点的位置。请参阅 创建简单绑定 和 绑定其他节点的属性。

值源绑定将替换任何先前设置的本地属性值。

当 Kanzi 移除值源绑定时:

  • 通过其他方式设置属性值会替换先前设置的本地值。

  • 本地属性值已被移除。

例如:

  • 当用户编辑文本时,设置 Tex Box 节点的 Text 属性的单向值源绑定将停止工作。要使用绑定更新文本,请改用到源或双向绑定。请参阅 使用绑定更新 Text Box 节点中的文本。。

  • 当用户切换按钮时,设置 Toggle Button 节点的 Toggle State 属性的单向绑定将停止工作。要使用绑定更新属性值,请使用到源或双向绑定。请参阅 使用绑定来更新切换状态。

修饰符绑定

修饰符绑定修改属性值,就像动画或状态管理器一样。

修饰符绑定要么:

  • 设置属性字段的值。

    例如,将节点的 Layout Transformation 属性 Rotation 属性字段绑定到 Scroll View 节点的 Scroll Position 属性,以使用滑动手势旋转节点。请参阅 教程:旋转 3D 模型。

  • 在绑定表达式中访问值源。

    例如,将节点的 Render Transformation 属性 Translation Y 属性字段绑定到同一节点的 Render Transformation 属性 Translation X 属性字段,以使该节点在 y 轴上移动的距离与在 x 轴上移动的距离相同。请参阅 修改您绑定的属性的值 和 getCurrentValue。

Kanzi 在值源绑定之后执行修饰符绑定。修饰符绑定不会替换本地属性值。

To-source 绑定

源绑定将属性值推送到节点或其他项目项,或推送到该项目项使用的资源。

例如,使用到源绑定来:

材质类型绑定

材质类型有其自己的特殊绑定类型,用于:

  • Uniforms

    Uniform bindings 使您能够修改材质类型使用的着色器 uniform 的值,而无需更改着色器代码。

    请参阅 Uniform bindings。

  • Temporary Variables

    在材质类型中,临时变量绑定使您能够将绑定的结果存储到一个临时变量中。您可以在同一材质类型中的其他绑定中引用此变量。

    请参阅 临时变量绑定。

另请参阅

使用绑定

自定义预设件的实例

Bindings expressions 参考

教程:创建仪表

教程:制作具有动态布局的应用程序

教程:创建滑块

教程:旋转 3D 模型

数据源 (Data Sources)

材质类型和材质

使用渲染通道

2D 节点的效果