升级Xamarin Forms到5.0.0后Expander控件未找到:是改名还是被移除
Xamarin.Forms 5.0 升级后 Expander 无法识别的问题解答
核心结论
Expander 既没有被修改名称,也没有被彻底移除,它在Xamarin.Forms 5.0中被从核心框架程序集剥离,转由官方团队主导的社区工具包独立提供维护和更新。
变更背景
Xamarin.Forms 4.x阶段官方就开始收敛核心框架的范围,把一批不属于基础UI框架必备能力、最初由社区贡献开发的控件从核心包中拆分,以此压缩核心程序集的体积、降低框架升级的耦合成本。Expander 属于首批被拆分的控件名单,在5.0正式发布版本中,它已经完全从Xamarin.Forms.Core核心程序集中移除,因此沿用之前在XAML中直接无引用使用Expander的配置,自然会触发“类型不存在、缺少程序集引用”的报错。
完整迁移修复步骤
- 给解决方案下的所有关联项目(共享代码库、Android平台项目、iOS平台项目等)安装官方维护的NuGet包:
Xamarin.CommunityToolkit,当前可正常使用的Expander官方兼容版本全部收纳在该工具包内。 - 在所有用到Expander的XAML页面的根节点属性中,添加对应控件包的命名空间引用,示例代码:
xmlns:toolkit="clr-namespace:Xamarin.CommunityToolkit.UI.Views;assembly=Xamarin.CommunityToolkit" - 把原XAML里不带前缀的
<Expander>标签,替换为带toolkit前缀的<toolkit:Expander>;后台C#代码中涉及Expander的类型引用,同步替换为Xamarin.CommunityToolkit.UI.Views命名空间下的类即可。
实操注意点
- 迁移后的Expander和你之前在Xamarin.Forms 4.x中用到的版本核心API完全对齐,原来写的展开状态双向绑定、展开/收起事件回调、控件布局配置逻辑几乎不需要改动,就能直接正常运行。
- 不要去找早就停更的第三方临时兼容包,这类包没有官方维护,对高版本Xamarin.Forms的适配存在漏洞,很容易引发运行时的不可预期异常。
内容的提问来源于stack exchange,提问作者signalover
相关产品推荐
相关产品推荐

