You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为OnPlatform设置空值实现跨平台ToolbarItem按需加载

实现方法

直接使用XAML原生的x:Null标记扩展为指定平台返回空值即可,不需要插入占位的空ToolbarItem,也不会触发解析异常。

正确XAML写法

给Android对应的On节点设置Value="{x:Null}",修改后的代码如下:

<ContentPage.ToolbarItems>
    <OnPlatform x:TypeArguments="ToolbarItem">
        <On Platform="UWP">
            <ToolbarItem IconImageSource="MyIcon.png"/>
        </On>
        <On Platform="Android" Value="{x:Null}"/>
    </OnPlatform>
    <!-- 其余原有ToolbarItem配置保持不变 -->
</ContentPage.ToolbarItems>

原写法问题说明

  • 留空Android的On节点时,XAML解析器无法获取到符合ToolbarItem类型的有效值,会直接抛出类型转换异常
  • 插入空属性的<ToolbarItem/>会实际生成一个默认可见的控件实例,即使没有文字和图标,也会在工具栏占据固定布局空间,完全达不到不加载的效果

兼容写法(适配低版本Xamarin/MAUI)

如果你的框架版本较老,不支持在On节点直接使用x:Null赋值,可以直接在代码后置中按平台动态添加ToolbarItem,逻辑可控无兼容问题:

// 放在页面构造函数的InitializeComponent()方法之后执行
if (Device.RuntimePlatform == Device.UWP)
{
    ToolbarItems.Add(new ToolbarItem
    {
        IconImageSource = "MyIcon.png",
        // 其余属性比如Command、点击事件、Text可在此同步配置
    });
}
// Android分支不执行添加逻辑,不会生成对应控件,也不会占用布局空间

两种写法都能实现UWP加载指定图标ToolbarItem、Android完全不加载该项的需求,不会产生多余占位。


内容的提问来源于stack exchange,提问作者Charles

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 07:21:21