

新闻资讯
技术学院OnPlatform 按操作系统(iOS/Android/Windows/macOS)适配,OnIdiom 按设备类型(Phone/Tablet/Desktop)适配;二者不可混用于同一属性,但可分层配合使用,覆盖80%跨平台UI适配需求。
OnPlatform 和 OnIdiom 是 .NET MAUI 中处理跨平台 UI 差异最常用、最轻量的两个标记扩展,它们不依赖代码后台,纯 XAML 即可完成适配。关键区别在于:OnPlatform 按操作系统(iOS/Android/Windows/macOS)区分,OnIdiom 按设备类型(Phone/Tablet/Desktop)区分。两者常配合使用,但不能混用同一个属性。
适合解决因系统原生控件行为或默认样式不同带来的问题,比如 iOS 的安全区域偏移、Android 的输入法遮挡、Windows 的 DPI 缩放等。
{OnPlatform Default=Red, Android=Blue, iOS=Pink},Default 可省略,未指定平台时自动回退到第一个值,再用多个
Android、iOS、Windows、macOS、Default(推荐始终保留 Default 作为兜底)适合响应式 UI 场景,比如手机竖屏只显示核心按钮,平板横屏加一列参数面板,桌面端展示完整表格和工具栏。
{OnIdiom Phone=200, Tablet=400, Desktop=800},也支持 Default 回退Phone、Tablet、Desktop、TV、Watch(实际项目中主要用前三者)DeviceInfo.Idiom 枚举值,该值由系统 API 返回,基本可靠如果问题根源是“这个控件在 iOS 上顶部被刘海挡住”,选 OnPlatform;如果是“手机上折叠菜单,桌面端展开为侧边栏”,选 OnIdiom。
不能直接嵌套,但可以分层使用。例如:外层用 OnIdiom 控制整体布局结
构,内部某个按钮的 Margin 再用 OnPlatform 微调对齐。
... (XAML 解析失败)Style + VisualStateManager 或 MVVM 绑定 DeviceInfo.Idiom 和 DeviceInfo.Platform
基本上就这些。不需要写平台判断代码,也不用维护多套 XAML,两个标记扩展覆盖了 80% 的日常适配需求。