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

Xamarin迁移至MAUI:OnPlatform.iOS未找到问题求助

解决MAUI中平台特定资源的转换问题

问题原因

MAUI对OnPlatform的XAML语法做了调整,不再支持OnPlatform.iOS、OnPlatform.Android这种子元素写法,这是你遇到编译错误的核心原因。

正确的XAML写法

直接在OnPlatform内使用<On>标签,通过Platform属性指定目标平台:

<?xml version="1.0" encoding="utf-8" ?>
<ResourceDictionary xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
         xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
         x:Class="Mobile.Framework.UI.Themes.HeightRequestResourceDictionary">

  <OnPlatform x:Key="NormalButtonHeightRequest" x:TypeArguments="x:Double">
    <On Platform="iOS">36</On>
    <On Platform="Android">42</On>
  </OnPlatform>
</ResourceDictionary>

如果需要同时匹配多个平台,可通过逗号分隔平台值,比如 <On Platform="iOS, MacCatalyst">36</On>。

Platform文件夹的使用场景

Platform文件夹主要用于存放平台专属的代码文件、特定平台资源(如平台独有图片、样式文件)或复杂的平台特定逻辑。对于这种简单的数值型平台资源,直接用OnPlatform在共享ResourceDictionary中定义更简洁,无需迁移到Platform文件夹。

若你的资源涉及更复杂的平台差异(比如不同平台的完整样式字典、自定义渲染逻辑),再考虑将对应部分拆分到Platform下的项目中。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 18:32:12