powerapps-yaml

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

Power Apps YAML — Guía Completa para Vibe Coding

Power Apps YAML — 流畅无错编码完整指南

Cuándo usar

适用场景

  • Al generar código YAML para pegar en Power Apps Studio
  • Al crear o modificar pantallas de Power Apps
  • Al convertir diseños a controles Power Apps modernos
  • Al trabajar con SharePoint como backend

  • 生成可粘贴到Power Apps Studio的YAML代码时
  • 创建或修改Power Apps屏幕时
  • 将设计转换为Power Apps现代控件时
  • 使用SharePoint作为后端时

🔑 Estructura Base (pa.yaml Schema v3)

🔑 基础结构(pa.yaml Schema v3)

La estructura OBLIGATORIA para que Power Apps Studio acepte el YAML via "Paste code":
yaml
Screens:
    NombrePantalla:
        Properties:
            Fill: =SurfaceAlt
            OnVisible: |-
                =Set(varEjemplo, "hola")
        Children:
            - NombreControl:
                Control: TipoControl
                Variant: VarianteOpcional
                Properties:
                    X: =0
                    Y: =0
                    Width: =Parent.Width
                    Height: =100
                Children:
                    - ControlHijo:
                        Control: Text
                        Properties:
                            Text: ="Hola mundo"
Power Apps Studio通过「粘贴代码」功能接受YAML的必填结构:
yaml
Screens:
    NombrePantalla:
        Properties:
            Fill: =SurfaceAlt
            OnVisible: |-
                =Set(varEjemplo, "hola")
        Children:
            - NombreControl:
                Control: TipoControl
                Variant: VarianteOpcional
                Properties:
                    X: =0
                    Y: =0
                    Width: =Parent.Width
                    Height: =100
                Children:
                    - ControlHijo:
                        Control: Text
                        Properties:
                            Text: ="Hola mundo"

Reglas de estructura

结构规则

  1. Top-level: Siempre empieza con
    Screens:
  2. Screen name: Debe coincidir EXACTAMENTE con el nombre de la pantalla en Power Apps Studio
  3. No usar
    Control: Screen
    : Las pantallas se definen directamente bajo
    Screens:
    , SIN propiedad
    Control
  4. Children es un array: Cada hijo comienza con
    - NombreControl:
  5. Control y Variant: Se definen dentro de cada hijo, NO en la pantalla
  6. Valores con
    =
    : TODAS las propiedades llevan
    =
    al inicio:
    Text: ="Hola"
    ,
    X: =0

  1. 顶层节点:必须以
    Screens:
    开头
  2. 屏幕名称:必须与Power Apps Studio中的屏幕名称完全一致
  3. 请勿使用
    Control: Screen
    :屏幕直接定义在
    Screens:
    下,无需
    Control
    属性
  4. Children为数组:每个子控件以
    - NombreControl:
    开头
  5. Control与Variant:定义在每个子控件中,而非屏幕节点
  6. 值需带
    =
    :所有属性值必须以
    =
    开头,例如
    Text: ="Hola"
    X: =0

🚨 Propiedades de Controles Modernos (CRÍTICO)

🚨 现代控件属性(关键)

Power Apps usa controles modernos que tienen nombres DIFERENTES a los clásicos. Usar los nombres incorrectos produce error
PA2108: Unknown property
.
Power Apps使用现代控件,其属性名称与传统控件不同。使用错误名称会触发
PA2108: Unknown property
错误。

Control
Text
(Label)

Text控件(标签)

❌ Clásico (NO usar)✅ Moderno (USAR)
Color
FontColor
FontWeight
Weight
yaml
- lblEjemplo:
    Control: Text
    Properties:
        X: =0
        Y: =0
        Width: =200
        Height: =40
        Text: ="Hola"
        FontColor: =RGBA(0, 0, 0, 1)
        Size: =14
        Weight: =FontWeight.Bold
        Align: =Align.Center
        VerticalAlign: =VerticalAlign.Middle
❌ 传统属性(请勿使用)✅ 现代属性(推荐使用)
Color
FontColor
FontWeight
Weight
yaml
- lblEjemplo:
    Control: Text
    Properties:
        X: =0
        Y: =0
        Width: =200
        Height: =40
        Text: ="Hola"
        FontColor: =RGBA(0, 0, 0, 1)
        Size: =14
        Weight: =FontWeight.Bold
        Align: =Align.Center
        VerticalAlign: =VerticalAlign.Middle

Control
Button

Button控件

❌ Clásico (NO usar)✅ Moderno (USAR)
Fill
BasePaletteColor
Color
FontColor
Size
FontSize
RadiusTopLeft/Right/etc
(no existe, usa Fluent theme)
yaml
- btnEjemplo:
    Control: Button
    Properties:
        X: =0
        Y: =0
        Width: =200
        Height: =44
        Text: ="Click"
        BasePaletteColor: =BrandAccent
        FontColor: =TextOnAccent
        FontSize: =14
        FontWeight: =FontWeight.Semibold
        Appearance: ='ButtonCanvas.Appearance'.Primary
        OnSelect: =Notify("Clickeado")
Valores de Appearance:
  • 'ButtonCanvas.Appearance'.Primary
    — botón principal
  • 'ButtonCanvas.Appearance'.Secondary
    — botón secundario
  • 'ButtonCanvas.Appearance'.Transparent
    — transparente (ideal para overlays y back buttons)
❌ 传统属性(请勿使用)✅ 现代属性(推荐使用)
Fill
BasePaletteColor
Color
FontColor
Size
FontSize
RadiusTopLeft/Right/etc
(无此属性,使用Fluent主题)
yaml
- btnEjemplo:
    Control: Button
    Properties:
        X: =0
        Y: =0
        Width: =200
        Height: =44
        Text: ="Click"
        BasePaletteColor: =BrandAccent
        FontColor: =TextOnAccent
        FontSize: =14
        FontWeight: =FontWeight.Semibold
        Appearance: ='ButtonCanvas.Appearance'.Primary
        OnSelect: =Notify("Clickeado")
Appearance可选值:
  • 'ButtonCanvas.Appearance'.Primary
    — 主按钮
  • 'ButtonCanvas.Appearance'.Secondary
    — 次按钮
  • 'ButtonCanvas.Appearance'.Transparent
    — 透明按钮(适用于覆盖层和返回按钮)

Control
TextInput

TextInput控件

❌ Clásico (NO usar)✅ Moderno (USAR)
Default
Value
HintText
/
PlaceholderText
(no existe en moderno)
Format
(no existe en moderno)
yaml
- txtEjemplo:
    Control: TextInput
    Properties:
        X: =0
        Y: =0
        Width: =200
        Height: =44
        Value: =""
        Mode: =TextMode.MultiLine  # Opcional
❌ 传统属性(请勿使用)✅ 现代属性(推荐使用)
Default
Value
HintText
/
PlaceholderText
(现代控件无此属性)
Format
(现代控件无此属性)
yaml
- txtEjemplo:
    Control: TextInput
    Properties:
        X: =0
        Y: =0
        Width: =200
        Height: =44
        Value: =""
        Mode: =TextMode.MultiLine  # 可选

Control
DatePicker

DatePicker控件

❌ Clásico (NO usar)✅ Moderno (USAR)
DefaultDate
SelectedDate
yaml
- dpEjemplo:
    Control: DatePicker
    Properties:
        X: =0
        Y: =0
        Width: =200
        Height: =44
        SelectedDate: =Today()
❌ 传统属性(请勿使用)✅ 现代属性(推荐使用)
DefaultDate
SelectedDate
yaml
- dpEjemplo:
    Control: DatePicker
    Properties:
        X: =0
        Y: =0
        Width: =200
        Height: =44
        SelectedDate: =Today()

Control
Dropdown

Dropdown控件

yaml
- ddEjemplo:
    Control: Dropdown
    Properties:
        X: =0
        Y: =0
        Width: =200
        Height: =44
        Items: =["Opción 1", "Opción 2", "Opción 3"]
        DefaultSelectedItems: =["Opción 1"]
        OnChange: =Set(varSeleccion, Self.Selected.Value)
Para items numéricos:
yaml
Items: =Sequence(24, 0)              # 0 a 23
Items: =[0, 5, 10, 15, 20, 25, 30]   # Lista explícita
yaml
- ddEjemplo:
    Control: Dropdown
    Properties:
        X: =0
        Y: =0
        Width: =200
        Height: =44
        Items: =["Opción 1", "Opción 2", "Opción 3"]
        DefaultSelectedItems: =["Opción 1"]
        OnChange: =Set(varSeleccion, Self.Selected.Value)
数字类型选项:
yaml
Items: =Sequence(24, 0)              # 0至23
Items: =[0, 5, 10, 15, 20, 25, 30]   # 显式列表

Control
GroupContainer

GroupContainer控件

❌ NO soportado✅ Alternativa
OnSelect
Usar un Button overlay transparente dentro del container
RadiusTopLeft/Right/etc
(no existe en modernos)
yaml
- containerEjemplo:
    Control: GroupContainer
    Variant: ManualLayout
    Properties:
        X: =0
        Y: =0
        Width: =200
        Height: =100
        Fill: =Surface
        DropShadow: =DropShadow.Light
Para hacer un container clickeable:
yaml
Children:
    - lblContenido:
        Control: Text
        Properties:
            Text: ="Mi contenido"
    - btnOverlay:
        Control: Button
        Properties:
            X: =0
            Y: =0
            Width: =Parent.Width
            Height: =Parent.Height
            Text: =""
            Appearance: ='ButtonCanvas.Appearance'.Transparent
            OnSelect: =Navigate(OtraPantalla, ScreenTransition.None)

❌ 不支持属性✅ 替代方案
OnSelect
在容器内添加透明Button覆盖层
RadiusTopLeft/Right/etc
(现代控件无此属性)
yaml
- containerEjemplo:
    Control: GroupContainer
    Variant: ManualLayout
    Properties:
        X: =0
        Y: =0
        Width: =200
        Height: =100
        Fill: =Surface
        DropShadow: =DropShadow.Light
实现可点击容器:
yaml
Children:
    - lblContenido:
        Control: Text
        Properties:
            Text: ="Mi contenido"
    - btnOverlay:
        Control: Button
        Properties:
            X: =0
            Y: =0
            Width: =Parent.Width
            Height: =Parent.Height
            Text: =""
            Appearance: ='ButtonCanvas.Appearance'.Transparent
            OnSelect: =Navigate(OtraPantalla, ScreenTransition.None)

📊 Gallery — Reglas Críticas

📊 Gallery — 关键规则

Regla #1: Variant es OBLIGATORIO

规则1:Variant为必填项

yaml
- galEjemplo:
    Control: Gallery
    Variant: BrowseLayout_Flexible_SocialFeed_ver5.0  # OBLIGATORIO
Error si falta:
PA1011: The keyword 'Variant' is required but is missing or empty
yaml
- galEjemplo:
    Control: Gallery
    Variant: BrowseLayout_Flexible_SocialFeed_ver5.0  # 必填
缺失时错误:
PA1011: The keyword 'Variant' is required but is missing or empty

Regla #2: Items de SharePoint directo → funciona bien

规则2:直接绑定SharePoint列表项 → 兼容性良好

yaml
Items: =MiListaSP
yaml
Items: =MiListaSP

Regla #3: Items de colección → usar ForAll con esquema explícito

规则3:绑定集合项 → 使用带显式Schema的ForAll

⚠️ PROBLEMA: Cuando
Items
apunta a una colección creada con
GroupBy + AddColumns
, los controles dentro de la gallery muestran errores ❌ porque Power Apps no puede inferir el esquema.
SOLUCIÓN: Usar
ForAll
con registros de forma explícita
{campo: valor}
:
yaml
OnVisible: |-
    =ClearCollect(
        colRanking,
        ForAll(
            GroupBy(colRegistros, Title, Email, Registros),
            {
                Nombre: ThisRecord.Title,
                EmailUsuario: ThisRecord.Email,
                Puntos: Sum(Registros, Puntos),
                Sesiones: CountRows(Registros)
            }
        )
    )
⚠️ 问题:当
Items
指向通过
GroupBy + AddColumns
创建的集合时,Gallery内的控件会显示错误 ❌,因为Power Apps无法推断其Schema。
解决方案:使用
ForAll
创建显式记录
{campo: valor}
yaml
OnVisible: |-
    =ClearCollect(
        colRanking,
        ForAll(
            GroupBy(colRegistros, Title, Email, Registros),
            {
                Nombre: ThisRecord.Title,
                EmailUsuario: ThisRecord.Email,
                Puntos: Sum(Registros, Puntos),
                Sesiones: CountRows(Registros)
            }
        )
    )

Regla #4: GroupBy — NO usar comillas en columnas

规则4:GroupBy — 列名请勿加引号

undefined
undefined

❌ MAL — "Registros" se interpreta como texto

❌ 错误 — "Registros"会被解析为文本

GroupBy(tabla, "Title", "Email", "Registros")
GroupBy(tabla, "Title", "Email", "Registros")

✅ BIEN — identificadores sin comillas

✅ 正确 — 标识符无需引号

GroupBy(tabla, Title, Email, Registros)
undefined
GroupBy(tabla, Title, Email, Registros)
undefined

Regla #5: No agrupar por columnas que cambian

规则5:请勿按可变列分组

Si un usuario puede cambiar de equipo, NO agrupar por
Equipo
porque aparecerá duplicado. Tomar el equipo del último registro:
EquipoUsuario: Last(Registros).Equipo
如果用户可切换团队,请勿按
Equipo
分组,否则会出现重复项。应取最新记录的团队信息:
EquipoUsuario: Last(Registros).Equipo

Regla #6: Acceder a tabla agrupada dentro de ForAll

规则6:在ForAll中访问分组表

undefined
undefined

❌ MAL — ThisRecord.Registros no resuelve

❌ 错误 — ThisRecord.Registros无法解析

Sum(ThisRecord.Registros, Puntos)
Sum(ThisRecord.Registros, Puntos)

✅ BIEN — acceso directo a la columna de grupo

✅ 正确 — 直接访问分组列

Sum(Registros, Puntos)
undefined
Sum(Registros, Puntos)
undefined

Template completo para Gallery con colección:

集合绑定Gallery完整模板:

yaml
- galRanking:
    Control: Gallery
    Variant: BrowseLayout_Flexible_SocialFeed_ver5.0
    Properties:
        X: =16
        Y: =188
        Width: =Parent.Width - 32
        Height: =Parent.Height - 204
        Items: =SortByColumns(colRanking, "Puntos", SortOrder.Descending)
        TemplatePadding: =6
        TemplateSize: =80
        Fill: =RGBA(0, 0, 0, 0)
    Children:
        - CardItem:
            Control: GroupContainer
            Variant: ManualLayout
            Properties:
                Width: =Parent.Width
                Height: =74
                Fill: =Surface
                DropShadow: =DropShadow.Light
            Children:
                - lblNombre:
                    Control: Text
                    Properties:
                        X: =16
                        Y: =12
                        Width: =Parent.Width - 140
                        Height: =24
                        Text: =ThisItem.Nombre

yaml
- galRanking:
    Control: Gallery
    Variant: BrowseLayout_Flexible_SocialFeed_ver5.0
    Properties:
        X: =16
        Y: =188
        Width: =Parent.Width - 32
        Height: =Parent.Height - 204
        Items: =SortByColumns(colRanking, "Puntos", SortOrder.Descending)
        TemplatePadding: =6
        TemplateSize: =80
        Fill: =RGBA(0, 0, 0, 0)
    Children:
        - CardItem:
            Control: GroupContainer
            Variant: ManualLayout
            Properties:
                Width: =Parent.Width
                Height: =74
                Fill: =Surface
                DropShadow: =DropShadow.Light
            Children:
                - lblNombre:
                    Control: Text
                    Properties:
                        X: =16
                        Y: =12
                        Width: =Parent.Width - 140
                        Height: =24
                        Text: =ThisItem.Nombre

🚀 Patrón de Caché Local (Optimización)

🚀 本地缓存模式(优化)

Problema

问题

Cada pantalla hace queries independientes a SharePoint → lento y redundante.
每个屏幕独立查询SharePoint → 速度慢且冗余。

Solución: Centro de caché en Screen_Inicio

解决方案:在Screen_Inicio设置缓存中心

yaml
undefined
yaml
undefined

Screen_Inicio.OnVisible — carga datos UNA VEZ

Screen_Inicio.OnVisible — 仅加载一次数据

OnVisible: |- =Set(varUsuarioActual, User().FullName); Set(varEmailActual, User().Email); ClearCollect( colRegistrosMes, Filter( MiListaSP, Month(Fecha) = Month(Today()), Year(Fecha) = Year(Today()) ) ); Set(varMisRegistros, Filter(colRegistrosMes, Email = varEmailActual)); Set(varMiEquipo, LookUp(Miembros, Email = varEmailActual, Equipo))
undefined
OnVisible: |- =Set(varUsuarioActual, User().FullName); Set(varEmailActual, User().Email); ClearCollect( colRegistrosMes, Filter( MiListaSP, Month(Fecha) = Month(Today()), Year(Fecha) = Year(Today()) ) ); Set(varMisRegistros, Filter(colRegistrosMes, Email = varEmailActual)); Set(varMiEquipo, LookUp(Miembros, Email = varEmailActual, Equipo))
undefined

Reutilizar en otras pantallas

在其他屏幕复用缓存

yaml
undefined
yaml
undefined

Screen_Ranking — usa colRegistrosMes, NO re-consulta SharePoint

Screen_Ranking — 使用colRegistrosMes,无需重新查询SharePoint

OnVisible: |- =ClearCollect( colRanking, ForAll( GroupBy(colRegistrosMes, Title, Email, Registros), { Nombre: ThisRecord.Title, Puntos: Sum(Registros, Puntos) } ) )
OnVisible: |- =ClearCollect( colRanking, ForAll( GroupBy(colRegistrosMes, Title, Email, Registros), { Nombre: ThisRecord.Title, Puntos: Sum(Registros, Puntos) } ) )

Screen_Equipos — usa varMiEquipo ya cacheado

Screen_Equipos — 使用已缓存的varMiEquipo

OnVisible: |- =Set(varVistaEquipos, "Lista") # varMiEquipo ya está cargado desde Screen_Inicio
undefined
OnVisible: |- =Set(varVistaEquipos, "Lista") # varMiEquipo已从Screen_Inicio加载完成
undefined

Después de guardar un registro — actualizar caché local

保存记录后 — 更新本地缓存

yaml
undefined
yaml
undefined

En btnGuardar.OnSelect, después del Patch:

在btnGuardar.OnSelect中,执行Patch后添加:

Patch(MiListaSP, Defaults(MiListaSP), { ... }); Collect(colRegistrosMes, { ...mismo registro... }); Navigate(Screen_Inicio, ScreenTransition.None)

**Resultado**: ~7 queries SP → **2 queries** (1 ClearCollect + 1 LookUp)

---
Patch(MiListaSP, Defaults(MiListaSP), { ... }); Collect(colRegistrosMes, { ...相同记录... }); Navigate(Screen_Inicio, ScreenTransition.None)

**优化结果**:约7次SP查询 → **2次查询**(1次ClearCollect + 1次LookUp)

---

🎨 Colores del Tema (App.Formulas)

🎨 主题颜色(App.Formulas)

Definir paleta global en
App > Formulas
:
BrandPrimary = RGBA(30, 41, 59, 1);
BrandAccent = RGBA(255, 107, 53, 1);
BrandAccentLight = RGBA(255, 107, 53, 0.08);
Surface = RGBA(255, 255, 255, 1);
SurfaceAlt = RGBA(245, 247, 252, 1);
TextPrimary = RGBA(15, 23, 42, 1);
TextSecondary = RGBA(100, 116, 139, 1);
TextOnAccent = RGBA(255, 255, 255, 1);
StatusSuccess = RGBA(16, 185, 129, 1);
StatusWarning = RGBA(234, 179, 8, 1);
StatusError = RGBA(239, 68, 68, 1);

App > Formulas
中定义全局调色板:
BrandPrimary = RGBA(30, 41, 59, 1);
BrandAccent = RGBA(255, 107, 53, 1);
BrandAccentLight = RGBA(255, 107, 53, 0.08);
Surface = RGBA(255, 255, 255, 1);
SurfaceAlt = RGBA(245, 247, 252, 1);
TextPrimary = RGBA(15, 23, 42, 1);
TextSecondary = RGBA(100, 116, 139, 1);
TextOnAccent = RGBA(255, 255, 255, 1);
StatusSuccess = RGBA(16, 185, 129, 1);
StatusWarning = RGBA(234, 179, 8, 1);
StatusError = RGBA(239, 68, 68, 1);

⏰ Patrón: Selector de Hora con Dropdowns

⏰ 模式:使用Dropdown实现时间选择器

El
DatePicker
solo selecciona fecha. Para hora, usar pares de Dropdowns:
yaml
undefined
DatePicker
仅支持日期选择。如需选择时间,可使用Dropdown组合:
yaml
undefined

Horas (0-23)

小时(0-23)

  • ddHoraH: Control: Dropdown Properties: Items: =Sequence(24, 0) DefaultSelectedItems: =[8]
  • ddHoraH: Control: Dropdown Properties: Items: =Sequence(24, 0) DefaultSelectedItems: =[8]

Separador ":"

分隔符 ":"

  • lblSep: Control: Text Properties: Text: =":" Weight: =FontWeight.Bold
  • lblSep: Control: Text Properties: Text: =":" Weight: =FontWeight.Bold

Minutos (intervalos de 5)

分钟(5分钟间隔)

  • ddHoraM: Control: Dropdown Properties: Items: =[0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55] DefaultSelectedItems: =[0]
undefined
  • ddHoraM: Control: Dropdown Properties: Items: =[0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55] DefaultSelectedItems: =[0]
undefined

Construir DateTime desde dropdowns:

通过Dropdown组合DateTime:

DateAdd(
    DateAdd(Today(), Value(ddHoraH.Selected.Value), TimeUnit.Hours),
    Value(ddHoraM.Selected.Value),
    TimeUnit.Minutes
)
DateAdd(
    DateAdd(Today(), Value(ddHoraH.Selected.Value), TimeUnit.Hours),
    Value(ddHoraM.Selected.Value),
    TimeUnit.Minutes
)

Calcular duración:

计算时长:

With(
    {
        mins: (Value(ddFinH.Selected.Value) * 60 + Value(ddFinM.Selected.Value)) -
              (Value(ddInicioH.Selected.Value) * 60 + Value(ddInicioM.Selected.Value))
    },
    If(mins > 0, Text(RoundDown(mins / 60, 0)) & "h " & Text(Mod(mins, 60)) & "min", "⚠️ Error")
)

With(
    {
        mins: (Value(ddFinH.Selected.Value) * 60 + Value(ddFinM.Selected.Value)) -
              (Value(ddInicioH.Selected.Value) * 60 + Value(ddInicioM.Selected.Value))
    },
    If(mins > 0, Text(RoundDown(mins / 60, 0)) & "h " & Text(Mod(mins, 60)) & "min", "⚠️ 错误")
)

📋 Proceso de Paste Code

📋 粘贴代码流程

  1. Crear la pantalla manualmente en Power Apps Studio
  2. Asegurar que el nombre coincide con el definido en el YAML
  3. Copiar TODO el contenido del archivo YAML (incluyendo
    Screens:
    )
  4. Seleccionar la pantalla en el Tree View
  5. Pegar con Ctrl+V o Click derecho → Paste code
  6. Si hay errores de design-time por colecciones en
    OnVisible
    , ejecutar (Play ▶️) para que se creen

  1. 手动创建屏幕:在Power Apps Studio中创建目标屏幕
  2. 匹配名称:确保屏幕名称与YAML中定义的完全一致
  3. 复制全部内容:复制YAML文件的所有内容(包括
    Screens:
  4. 选择屏幕:在Tree View中选中目标屏幕
  5. 粘贴代码:使用Ctrl+V或右键菜单→粘贴代码
  6. 处理集合错误:若因
    OnVisible
    中的集合导致设计时错误,运行(播放▶️)应用以创建集合

⚠️ Tabla de errores comunes

⚠️ 常见错误对照表

ErrorCausaSolución
PA2108: Unknown property 'Color'
Propiedad clásicaUsar
FontColor
PA2108: Unknown property 'FontWeight'
en Text
Propiedad clásicaUsar
Weight
PA2108: Unknown property 'Fill'
en Button
Propiedad clásicaUsar
BasePaletteColor
PA2108: Unknown property 'Default'
en TextInput
Propiedad clásicaUsar
Value
PA2108: Unknown property 'DefaultDate'
Propiedad clásicaUsar
SelectedDate
PA2108: Unknown property 'OnSelect'
en GroupContainer
No soportadoButton overlay transparente
PA1011: 'Variant' is required
en Gallery
Falta VariantAgregar
Variant: BrowseLayout_Flexible_SocialFeed_ver5.0
PA2109: Unknown variant 'X'
en Gallery
Variant inválidoUsar
BrowseLayout_Flexible_SocialFeed_ver5.0
YamlInvalidSyntax: PaModule
Estructura incorrectaUsar
Screens:
como top-level
Gallery con ❌ en controlesColección sin esquema inferibleUsar
ForAll
+ registros explícitos
Nombre duplicado en rankingGroupBy por columna variableNo agrupar por campos que cambian
"Registros" error: text
Comillas en GroupByQuitar comillas:
GroupBy(t, Col, Grupo)

错误信息原因解决方案
PA2108: Unknown property 'Color'
使用传统属性改用
FontColor
PA2108: Unknown property 'FontWeight'
(Text控件)
使用传统属性改用
Weight
PA2108: Unknown property 'Fill'
(Button控件)
使用传统属性改用
BasePaletteColor
PA2108: Unknown property 'Default'
(TextInput控件)
使用传统属性改用
Value
PA2108: Unknown property 'DefaultDate'
使用传统属性改用
SelectedDate
PA2108: Unknown property 'OnSelect'
(GroupContainer控件)
控件不支持该属性添加透明Button覆盖层
PA1011: 'Variant' is required
(Gallery控件)
缺失Variant属性添加
Variant: BrowseLayout_Flexible_SocialFeed_ver5.0
PA2109: Unknown variant 'X'
(Gallery控件)
Variant无效使用
BrowseLayout_Flexible_SocialFeed_ver5.0
YamlInvalidSyntax: PaModule
结构错误
Screens:
作为顶层节点
Gallery控件内显示❌集合无可用推断Schema使用
ForAll
+ 显式记录
排名中出现重复名称按可变列分组请勿按可修改字段分组
"Registros" error: text
GroupBy中列名加了引号移除引号:
GroupBy(t, Col, Grupo)

🧩 Mapeo rápido: Clásico → Moderno

🧩 快速映射:传统→现代

ControlPropiedad ClásicaPropiedad Moderna
Text
Color
FontColor
Text
FontWeight
Weight
Button
Fill
BasePaletteColor
Button
Color
FontColor
Button
Size
FontSize
TextInput
Default
Value
TextInput
HintText
(no existe)
DatePicker
DefaultDate
SelectedDate
GroupContainer
OnSelect
(no existe)
Todos
RadiusTopLeft
etc.
(no existe)

控件传统属性现代属性
Text
Color
FontColor
Text
FontWeight
Weight
Button
Fill
BasePaletteColor
Button
Color
FontColor
Button
Size
FontSize
TextInput
Default
Value
TextInput
HintText
(无此属性)
DatePicker
DefaultDate
SelectedDate
GroupContainer
OnSelect
(无此属性)
所有控件
RadiusTopLeft
(无此属性)

💡 Tips Power Fx

💡 Power Fx技巧

  • Separadores: Usar comas (
    ,
    ) como separadores — la config regional del entorno define si Power Apps espera
    ,
    o
    ;
  • Strings multilínea: Usar
    |-
    en YAML seguido de la fórmula con
    =
    al inicio
  • SharePoint Choice columns: Al hacer Patch, usar
    {Value: "texto"}
    para columnas de tipo Choice
  • SharePoint list names: Verificar el nombre EXACTO de la lista (con números si hay duplicados, ej:
    MiLista1
    )
  • Colecciones tipadas: Siempre usar
    ForAll({campo: valor})
    en vez de
    AddColumns
    para colecciones que alimentan Gallery
  • Variables globales: Cachear datos compartidos en
    Screen_Inicio.OnVisible
    y reutilizar en otras pantallas
  • 分隔符:使用逗号
    ,
    )作为分隔符 — 环境区域设置决定Power Apps是否接受
    ,
    ;
  • 多行字符串:在YAML中使用
    |-
    ,后续公式以
    =
    开头
  • SharePoint选项列:执行Patch时,选项列需使用
    {Value: "文本"}
    格式
  • SharePoint列表名称:确认列表的准确名称(若有重复会带数字,例如
    MiLista1
  • 强类型集合:为Gallery提供数据时,始终使用
    ForAll({campo: valor})
    而非
    AddColumns
  • 全局变量:在
    Screen_Inicio.OnVisible
    中缓存共享数据,在其他屏幕复用