如何从休假申请模板的LeftMenuCollect集合中移除菜单项?
解决Power Apps休假模板移除左侧菜单项的问题
嘿,我完全懂你遇到的这个麻烦——Power Apps的预制模板经常会在多个地方悄悄初始化集合,只改OnStart或者临时移除肯定会被覆盖,重新加载就打回原形。下面给你一步步搞定的方法:
1. 找到LeftMenuCollect的真正初始化位置
别只盯着App的OnStart,休假模板通常会在主屏幕(比如Dashboard/Home屏幕)的OnVisible事件里重新生成这个菜单集合,甚至有些模板会用自定义组件来管理菜单。你可以用右上角的搜索框搜LeftMenuCollect,看看所有引用这个集合的地方,找到那段用来初始化它的代码(一般是ClearCollect或者Collect语句)。
2. 直接修改初始化代码(最彻底的方法)
找到初始化代码后,你会看到类似这样的结构:
ClearCollect(LeftMenuCollect, Table( {Value: "Dashboard", Icon: Icon.Dashboard, Screen: DashboardScreen}, {Value: "My Leave Balance", Icon: Icon.Balance, Screen: LeaveBalanceScreen}, {Value: "About", Icon: Icon.Info, Screen: AboutScreen} // 其他菜单项... ) )
直接把包含"My Leave Balance"和"About"的那两行删掉就行。这样每次集合初始化时就不会包含这两个选项,不管怎么重新加载应用,菜单都不会再显示它们。
3. 如果找不到初始化代码,用RemoveIf强制移除
要是你搜遍了都找不到哪里初始化的集合,或者模板是从数据源动态拉取菜单的,那可以在App的OnStart或者主屏幕的OnVisible的最后加上这段代码:
RemoveIf(LeftMenuCollect, Value = "About" || Value = "My Leave Balance")
这段代码会在集合生成后,立刻把这两个项删掉,确保每次加载都生效。
注意别踩的坑
- 别用临时的
Remove ThisItem,那只是当前会话的临时修改,一旦集合被重新初始化(比如切换屏幕、刷新应用)就会恢复。 - 如果左侧菜单是自定义组件,记得去组件内部的逻辑里找集合的生成代码,而不是只在屏幕或App层级找。
内容的提问来源于stack exchange,提问作者Saxon Rix
相关产品推荐
相关产品推荐

