使用资源字典¶
资源字典是指向资源的资源 ID 的集合。您可以将资源字典添加到任何节点。
默认情况下,资源字典存在于:
Screen 节点
所有预设件的根节点
节点可以访问其自己的资源字典以及祖先节点中定义的资源字典中的所有资源 ID。您可以将资源 ID 分配为资源属性的值,并且它们在 Kanzi Studio 中以 ResourceID → Resource 的语法显示。
您可以将资源设为任何节点的本地资源。通过将资源添加到节点的范围,您将资源 ID 条目添加到该节点的资源字典中。资源 ID 是一个标识符,用于将资源与其使用位置分离。
向节点添加资源字典¶
要将资源字典添加到节点中,在 Node Tree 按 Alt 并右键单击 一个节点并选择 Resource Dictionary。
查看资源字典的内容¶
要查看资源字典的内容:
在 Node Tree 中,选择其资源字典内容要在 Dictionaries 中查看的节点。在 Dictionaries 中列出的资源是按颜色编码的:
白色类型标记选定的资源字典中的有效资源。
例如,在下图中,Screen 节点中的所有资源都是有效的。
灰色斜体类型标记另一个资源字典中的资源重写的资源。
例如,在下图中,Screen 节点的资源字典中的 Body 文本资源的值被 Warning message 节点的资源字典中的 Body 文本资源覆盖。
橙色类型标记别名。请参阅 使用别名。
例如:在下图中,Media 是指向 Screen/RootPage/Media 节点的别名。
浅灰色背景上的白色类型标记选定地区或主题中的资源,而这些资源使用本地化表或主题组中设置的默认值。请参阅 本地化 (Localization) 和 为您的应用程序设置主题。
例如:在下图中,Localization Table 中的 en-US 区域设置使用了在该本地化表中定义的 Hello 文本资源 ID 的默认值。
查看并激活地区和主题¶
要查看和激活语言环境和主题,请在 Dictionaries 中单击 Locales and Themes 以启用本地化表和主题组的查看,并在 Preview 中为每个本地化表和主题组选择您想要查看的语言环境和主题。
向资源字典添加资源¶
向资源字典添加资源:
将资源字典添加到节点。请参阅 向节点添加资源字典。
在 Dictionaries 中,单击 + Add Resource 并选择:
Create 并选择您要创建的资源类型。
Add Existing 并选择一个已在您的项目中存在的资源。
在资源字典中使用 kzb URL 作为资源¶
您可以使用 kzb URL 指向另一个 Kanzi Studio 项目中的资源。
要将 kzb URL 用于资源字典中的资源:
在 Dictionaries 中,双击要使用 kzb URL 的资源的单元格,并在下拉菜单中选择 < URL >。
在单元格中,输入要使用的资源的 kzb URL。
例如,要使用来自另一个 Kanzi Studio 项目的字体,请输入指向该字体的 kzb URL。
在 API 中使用资源字典¶
要创建资源字典:
// Create a resource dictionary.
ResourceDictionarySharedPtr dictionary = ResourceDictionary::create(domain, "Dictionary");
要向资源字典添加内容:
// Add resources to a resource dictionary.
dictionary->add(ResourceID("red icon"), texture);
dictionary->add(ResourceID("blue icon"), "kzb://my_project/Textures/Blue Icon");
要从资源字典获得资源:
// Acquire resources from a resource dictionary.
ResourceSharedPtr redIcon = dictionary->acquire(ResourceID("red icon"));
ResourceSharedPtr blueIcon = dictionary->acquire(ResourceID("blue icon"));
要更改节点的资源字典:
// Change the resource dictionary of a node.
node->setResourceDictionary(dictionary);
要扩展节点的现有资源字典:
// Extend the existing resource dictionary of a node with a nested resource dictionary.
node->addResourceDictionary(dictionary);
有关详细信息,请参阅 ResourceDictionary 类。