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
相关产品推荐
相关产品推荐

