首次构建MAUI应用引入Material Design遇URI错误求助
问题排查与解决
核心问题是你误用了WPF版本的Material Design资源引用格式和包,MAUI不支持WPF的pack://application资源URI规则,且需要使用专门适配MAUI的Material Design库。
具体解决步骤
1. 卸载不兼容的NuGet包
先移除针对WPF的Material Design相关包:
MaterialDesignThemes.WpfMaterialDesignExtensions(WPF版本)
2. 安装MAUI专用的Material Design包
在NuGet包管理器中安装MaterialDesignThemes.Maui(这是官方适配MAUI的Material Design 3实现)。
3. 修改App.xaml的资源字典引用
替换原有的Material Design资源引用为MAUI兼容的格式,注意加载顺序(第三方资源在前,自定义样式在后,方便覆盖默认样式):
<Application xmlns="http://schemas.microsoft.com/dotnet/2021/maui" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" xmlns:local="clr-namespace:Presentation" x:Class="Presentation.App"> <Application.Resources> <ResourceDictionary> <ResourceDictionary.MergedDictionaries> <!-- Material Design 3 核心资源 --> <ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Maui;component/Themes/MaterialDesign3.Defaults.xaml" /> <!-- 你的自定义样式 --> <ResourceDictionary Source="Resources/Styles/Colors.xaml" /> <ResourceDictionary Source="Resources/Styles/Styles.xaml" /> </ResourceDictionary.MergedDictionaries> </ResourceDictionary> </Application.Resources> </Application>
4. 初始化Material Design组件
在App.xaml.cs的构造函数中添加初始化代码,确保MAUI能正确加载Material Design资源:
public App() { InitializeComponent(); // 初始化Material Design MAUI组件 MaterialDesignThemes.Maui.MauiMaterial.Init(); MainPage = new MainPage(); }
额外注意
- 如果你需要类似
MaterialDesignExtensions的扩展控件,要找MAUI版本的对应库,不要直接用WPF的扩展包,两者控件模型不兼容。 - MAUI的资源字典引用优先使用
pack://application:,,,/或ms-appx:///格式,不要混用WPF的资源路径规则。
内容的提问来源于stack exchange,提问作者BU00HA
相关产品推荐
相关产品推荐

