步骤 2 - 在 Kanzi Studio 中使用数据源。¶
在本教程的这一步中,您将使用上一步中创建的数据源插件从 XML 文件获取 Kanzi 应用程序的数据。
从数据源创建数据对象¶
在本节中,您将准备您的 Kanzi Studio 项目以接收您在本教程的上一步中创建的数据源插件的数据。然后,您使用该插件从数据源创建数据对象。在接下来的部分中,您将这些数据对象绑定到应用程序中不同节点的属性,并使用来自该数据源的数据。
要从数据源创建数据对象:
在 Kanzi Studio 的 Quick Start 窗口中,点击 Projects 并选择 Tutorials 选项卡。在 Data sources 教程旁边,点击 Open 并选择 Start project。
在 Library > Kanzi Engine Plugins 中选择 XML_data_source 插件,并在 Properties 中确保将 Is Enabled 属性启用。
小技巧
使用 Is Enabled 属性在您的项目中启用或禁用任何 Kanzi Engine 插件。
在 Library > Kanzi Engine Plugins 中,右键单击 XML_data_source 插件并选择 Update Kanzi Engine Plugin。
每次更改插件源代码并在 Visual Studio 中构建插件时,您都必须更新插件元数据。在更新插件元数据并在 Library 中选择插件后,在 Properties 中,Metadata Last Read From 属性显示 Kanzi Studio 加载并读取元数据的插件 .dll 文件。
在 Window 主菜单中选择 Data Sources。
使用 Data Sources 窗口在您的项目中创建、设置和删除数据源,并将数据源中的数据对象连接到项目中的节点和资源。
在 Data Sources 窗口中,点击 Create Data Source,输入此数据源的名称,然后点击 OK 以创建数据源。
使用 Data Source Type 属性设置您要使用的数据源的类型。由于您在本教程的上一步中仅定义了一个数据源 (XML_data_source),因此您只能选择该数据源。
例如,将数据源命名为 Cluster。
在 Data Sources 窗口中,紧挨着您刚创建的 Cluster 数据源,点击
,并将 XML Data Source File 属性设置为 Cluster.xml文件。您可以在Application/bin目录中找到该文件。您在数据源插件中创建了 XML Data Source File 属性。
属性可用于告诉数据源插件从哪个 XML 文件中获取数据。
Cluster.xml是您在本教程中创建的应用程序的数据源。您在上一步中创建的数据源插件从此文件中的数据创建数据对象。
单击
,位于 Cluster 数据源旁边,使用 XML_data_source 数据源插件加载 Cluster.xml文件,并从该文件的内容创建数据对象。当插件创建数据对象时,您可以在 Data Sources 窗口中看到它们。每次数据源中的数据发生变化时,要在 Kanzi Studio Preview 中查看更改,请单击
以通知数据源插件重新加载数据源并更新数据对象。
使用您应用程序中的数据源数据¶
在本节中,您将绑定属性,这些属性设置节点的位置并在 Text Block 2D 节点中显示值,以便将其绑定到您在上一节中创建的 Cluster 数据源中的数据对象。
要使用您应用程序中的数据源数据:
在 Node Tree 中选择 RootNode 节点,在 Properties 中添加 Data Context 属性,并将其设置为您在上一节中创建的数据源。
通过设置 Data Context 属性,您可以告知应用程序从哪个数据源接收数据。当您为一个节点设置 Data Context 属性时,其所有子节点都会继承 Data Context 属性的值。如果您想为某个子节点使用不同的数据上下文,请在该节点中添加 Data Context 属性,并将其设置为您想要使用的数据上下文。
小技巧
您可以通过从 Data Sources 窗口拖动数据对象并将其放到 Node Tree 中要分配该数据上下文的节点上来设置数据上下文。
在 Node Tree 中选择 Gauges > SpeedNeedle 节点,在 Properties 中点击 + Add Binding,并在 Binding Editor 中设置:
Property 到 Render Transformation
Property Field 到 Rotation Z
Expression 到
{DataContext.gauges.speed}-140
单击 Save。
通过此绑定,您可以根据
Cluster.xml中 speed 元素设置的值旋转 SpeedNeedle 节点。您必须从数据源提供的值中减去 140,以便在 speed 数据对象的值为 0 时,将指针正确定位在仪表的值 0 处。小技巧
您可以右键单击某个属性并选择 Create Binding,开始为该属性创建绑定。
这样,您会自动将该属性添加到 Binding Editor 中。
对 FuelNeedle 和 BatteryNeedle 节点重复上一步骤:
在 Binding Editor 中为 FuelNeedle 设置 Expression 为
{DataContext.gauges.fuel}-39
在 Binding Editor 中为 BatteryNeedle 设置 Expression 为
-{DataContext.gauges.battery}+39
在 Node Tree 中,选择 Gauges > SpeedView > SpeedValue 节点,从 Data Sources 窗口中拖动 Cluster > gauges > speed 数据对象,并将其放在 Properties 中的 Text 属性上。
当您将数据对象拖放到具有单个字段的属性上时,Kanzi Studio 会创建一个绑定,将该属性的值绑定到您拖放到该属性上的数据对象。SpeedValue 节点的 Text 属性现在来自 Cluster 数据源。
对 SpeedUnit 和 Distance 重复上一步:
对于 Data Sources 中的 Gauges > SpeedView > SpeedUnit 节点,将 Cluster > gauges > speed > unit 数据对象拖放到 Text 属性上。
对于 Data Sources 中的 Navigation > Stack Layout 2D > Distance 节点,将 Cluster > navigation > directions > distance 数据对象拖放到 Text 属性上。
在文本编辑器中打开
Application/bin/Cluster.xml文件,并更改 speed、fuel、battery 或 distance XML 元素中的值。当您保存文件时,您在本教程的上一步中创建并定义数据源的 Kanzi Engine 插件会更新数据对象,并在 Kanzi Studio Preview 中显示更新后的值。如果您想手动重新加载数据源的数据,请在 Data Sources 窗口中,点击您想要重新加载的数据源旁边的
。Kanzi Studio 重新加载该数据源的数据,并更新数据对象及其值。
小技巧
默认情况下,Preview 仅在 Kanzi Studio 窗口聚焦时更新内容。要在 Kanzi Studio 窗口未聚焦时查看 Kanzi Studio 项目的更改,请在 Kanzi Studio 中选择 Edit > User Preferences,并在 Advanced 选项卡中启用 Update Preview when Kanzi Studio is not focused 设置。
使用数据源中的数据控制状态¶
状态管理器控制本教程应用程序中的转向指示器和导航信息。在此步骤中,您将绑定这些节点中状态管理器的控制器属性的值,以便您可以使用来自数据源的数据更改应用程序的状态。
要使用数据源中的数据控制应用程序状态:
在 Node Tree 中,选择 Gauges > TurnIndicatorLeft 节点,从 Data Sources 窗口中拖动 Cluster > turnindicator > left 数据对象,并将其放到 Properties 中的 XMLdatasource.TurnIndicator 属性上。
XMLdatasource.TurnIndicator 控制器属性是一个布尔数据类型。您可以通过将
Cluster.xml文件中 turnindicator > left XML 元素的值设置为 true 和 false 来打开和关闭转向指示器。
对 Gauges > TurnIndicatorRight 节点重复上一步。使用 Cluster > turnindicator > right 数据对象。
在 Node Tree 中,选择 Navigation > Stack Layout 2D > VisualDirections 节点,从 Data Sources 窗口中拖动 Cluster > navigation > directions > visualdirections 数据对象,并将其放到 Properties 中的 XMLdatasource.VisualDirections 属性上。
XMLdatasource.VisualDirections 控制器属性的数据类型是整数,控制此节点的状态管理器有两个状态。要指示驱动程序向左转,请将 XMLdatasource.VisualDirections 属性的值设置为 0 以使用 LeftTurn 状态;要向右转,请设置值 1 以使用 RightTurn 状态。
对 Navigation > Stack Layout 2D > Instructions 节点重复上一步,该节点提供驾驶路线的书面说明。将 Cluster > navigation > directions > instructions 数据对象放到 XMLdatasource.NavigationInstructions 属性中。
XMLdatasource.NavigationInstructions 控制器属性的数据类型是整数,并且控制此节点的状态管理器有四个状态。每个状态包含不同的书面指令。
您现在可以从
Cluster.xml数据源控制集群。使用文本编辑器更改Cluster.xml文件中的值,保存Cluster.xml文件,并且 Kanzi Studio Preview 和 Data Sources 窗口显示更新的数据对象及其值。