如何在不跳转新页面时,通过选中Gallery项更新其Items属性?
解决Power Apps Gallery不跳转页面异步更新Items的问题
问题根源
你当前的表达式直接依赖Gallery.Selected控制Items切换,这会触发循环依赖:当Gallery的Items更新时,原选中项会被清空,Gallery.Selected变为空值,导致逻辑无法正常执行。
可行解决方案
通过变量存储当前选中的分类状态,绕开对Gallery自身Selected属性的直接依赖,具体步骤如下:
1. 初始化状态变量
在屏幕的OnVisible事件中初始化变量,保存初始分类列表:
Set(varCurrentItems, [Category_Name:"C1", Category_Name:"C2", Category_Name:"C3"]); Set(varSelectedCat, Blank())
2. 绑定Gallery的Items属性
把Gallery的Items属性设置为刚才的变量:
varCurrentItems
3. 配置Gallery项的点击逻辑
在Gallery中每个项的OnSelect属性里添加切换逻辑:
If( ThisItem.Category_Name <> "C1", Set(varCurrentItems, [Category_Name:"sub1_C1", Category_Name:"sub2_C1"]), Set(varCurrentItems, [Category_Name:"C1", Category_Name:"C2", Category_Name:"C3"]) ); Set(varSelectedCat, ThisItem.Category_Name)
4. (可选)保持选中高亮
如果需要让选中的项保持高亮,可在Gallery项的Fill属性中设置:
If(ThisItem.Category_Name = varSelectedCat, RGBA(220,220,220,1), White)
扩展说明
如果你的子分类是从数据源异步加载的,只需把Set(varCurrentItems, ...)里的静态列表替换为数据源查询即可,比如:
Set(varCurrentItems, Filter(SubCategoriesTable, ParentCategory = ThisItem.Category_Name))
内容的提问来源于stack exchange,提问作者akg1421
相关产品推荐
相关产品推荐

