📜  如何在 powerapps 组件框架中获取实体颜色 (1)

📅  最后修改于: 2023-12-03 15:24:19.109000             🧑  作者: Mango

如何在 PowerApps 组件框架中获取实体颜色

在 PowerApps 中使用组件框架开发应用程序时,有时需要以编程方式获取实体的颜色。这可以通过以下步骤实现:

  1. 在 PowerApps 中打开组件,并进入组件代码编辑器。

  2. 导入以下名称空间:

import { EntityReference, getEntityMetadata } from "pcf-utils";
  1. 创建一个异步函数以获取实体颜色。该函数需要实体参考作为输入参数,返回 Promise 对象:
async function getEntityColor(entityRef: EntityReference): Promise<string> {
    try {
        const entityMetadata = await getEntityMetadata(entityRef);
        const color = entityMetadata.PrimaryColor.Value;
        return color;
    } catch (error) {
        console.error(error.message);
        return "#FFFFFF";
    }
}

该函数使用 getEntityMetadata 实用工具方法,该方法在指定实体参考的元数据中获取实体颜色。此外,如果出现错误,则将返回默认颜色(白色)。

  1. 在组件代码中使用该函数以获取实体颜色:
const entityRef = this.context.parameters.entityReference.raw;

const color = await getEntityColor(entityRef);

在此示例中,entityReference 参数是在组件安装配置过程中传递给组件的。您还可以使用其他方法获取实体参考,例如 PowerApps 打开事件中的 context.parameters 对象。

  1. 使用实体颜色进行其他操作(例如更改组件 UI 颜色)。以下是一个示例方法:
function updateUiColor(color: string) {
    const element = this.domElement.firstChild as HTMLElement;
    element.style.color = color;
}

在此示例中,domElement 是组件根元素的 DOM 引用,updateUiColor 方法将颜色应用于该元素。

Markdown 代码片段
# 如何在 PowerApps 组件框架中获取实体颜色

1. 导入以下名称空间:
```typescript
import { EntityReference, getEntityMetadata } from "pcf-utils";
  1. 创建一个异步函数以获取实体颜色。该函数需要实体参考作为输入参数,返回 Promise 对象:
async function getEntityColor(entityRef: EntityReference): Promise<string> {
    try {
        const entityMetadata = await getEntityMetadata(entityRef);
        const color = entityMetadata.PrimaryColor.Value;
        return color;
    } catch (error) {
        console.error(error.message);
        return "#FFFFFF";
    }
}
  1. 在组件代码中使用该函数以获取实体颜色:
const entityRef = this.context.parameters.entityReference.raw;

const color = await getEntityColor(entityRef);
  1. 使用实体颜色进行其他操作(例如更改组件 UI 颜色)。以下是一个示例方法:
function updateUiColor(color: string) {
    const element = this.domElement.firstChild as HTMLElement;
    element.style.color = color;
}