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

.NET MAUI是否支持创建类似UWP的平台特定视图?

.NET MAUI 平台特定视图实现方案

MAUI原生支持和UWP逻辑几乎一致的平台特定视图能力,不需要靠预处理器指令写硬编码分支,两种官方约定式实现完全匹配UWP的开发习惯:

  • 平台专属文件夹匹配(对应UWP将视图放入平台专属文件夹的方案)
    MAUI的多目标编译系统会自动识别Platforms目录下的平台专属文件,你只需要在对应平台的文件夹下创建同名视图即可,编译时会自动将当前平台的视图文件打包,忽略其他平台的对应文件。
    举个结构示例:

    你的项目
    ├─ Platforms
    │  ├─ Android
    │  │  └─ Pages
    │  │     └─ Page1.xaml / Page1.xaml.cs
    │  ├─ Windows
    │  │  └─ Pages
    │  │     └─ Page1.xaml / Page1.xaml.cs
    └─ 共享业务逻辑代码
    

    导航时直接写通用代码await Navigation.PushAsync(new Page1());即可,不需要加任何平台判断,运行时会自动加载当前平台的对应视图。

  • 文件名后缀匹配(对应UWP文件名追加设备名的方案)
    如果你不想把视图文件拆分到Platforms目录下,直接在共享项目中创建视图时,给文件名加上对应平台的后缀即可,MAUI会自动根据后缀匹配对应平台的实现。
    支持的标准平台后缀包括:

    • .android 对应安卓平台
    • .ios 对应iOS平台
    • .windows 对应Windows平台
    • .maccatalyst 对应Mac Catalyst平台
      举个文件示例:
    你的项目/Pages
    ├─ Page1.xaml / Page1.xaml.cs (可选,放全平台通用的默认实现或公共分部逻辑)
    ├─ Page1.android.xaml / Page1.android.xaml.cs (安卓端特定视图)
    └─ Page1.windows.xaml / Page1.windows.xaml.cs (Windows端特定视图)
    

    这种方式的调用逻辑和普通页面完全一致,不需要修改任何导航、依赖注入相关的通用代码。

注意:使用上述两种方案时,必须保证不同平台的视图类名、命名空间完全一致,否则会出现编译时类型冲突或找不到类型的问题。如果有跨平台复用的视图逻辑,可以把公共逻辑抽为同名分部类放在共享目录,减少重复代码。

你之前使用的预处理器指令+独立类名的方案虽然能跑,但维护成本很高,完全不符合MAUI的多目标编译设计约定,用上述两种原生方案可以省掉所有手动分支判断的代码,维护成本和UWP的平台特定视图方案基本持平。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 03:51:28