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

