拆分UWP项目后启动报错:找不到DefaultListViewItemStyle资源求解决
修复UWP拆分项目中
DefaultListViewItemStyle找不到的问题 针对你拆分UWP项目后遇到的资源加载异常,按以下步骤排查修复:
1. 确保类库项目的WinUI资源配置正确
类库项目(包含原App.xaml)必须正确引入WinUI 2资源:
- 确认已安装
Microsoft.UI.XamlNuGet包,项目文件(.csproj)中包含:<PropertyGroup> <TargetPlatformMinVersion>10.0.17763.0</TargetPlatformMinVersion> <UseWinUI>true</UseWinUI> </PropertyGroup> - 原App.xaml中
<muxc:XamlControlsResources />必须放在Application.Resources的最顶层,保证资源能被子类继承:<Application.Resources> <muxc:XamlControlsResources xmlns:muxc="using:Microsoft.UI.Xaml.Controls" /> <!-- 自定义资源放在WinUI资源之后 --> </Application.Resources>
2. 简化DummyApp的XAML与代码
不要在DummyApp中添加任何资源定义,避免覆盖上层资源:
- DummyApp.xaml保持极简,直接继承类库中的BaseApp:
<local:BaseApp xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="using:你的类库命名空间"> </local:BaseApp> - DummyApp.xaml.cs中必须调用
InitializeComponent(),构造函数只处理启动逻辑:public sealed partial class DummyApp : BaseApp { public DummyApp() { InitializeComponent(); // 这里只加启动相关的动态代码,不要修改资源逻辑 } }
3. 修复页面的资源继承问题
如果MainPage在类库中,检查其XAML是否阻断了资源继承:
- 移除页面中多余的空
Page.Resources块,否则会阻断Application级资源的继承; - 如果需要页面自定义资源,通过
MergedDictionaries显式引用类库资源:<Page.Resources> <ResourceDictionary> <ResourceDictionary.MergedDictionaries> <ResourceDictionary Source="ms-appx:///你的类库命名空间/Resources.xaml" /> </ResourceDictionary.MergedDictionaries> <!-- 页面自定义资源 --> </ResourceDictionary> </Page.Resources>
4. 彻底清理重建解决方案
UWP资源加载容易受缓存影响,执行以下操作:
- 删除类库和启动项目的bin/obj文件夹;
- 清理NuGet缓存;
- 先重新生成类库项目,再生成启动项目。
额外排查点
- 确认类库项目的输出类型是
Windows Runtime Component,确保资源能被启动项目访问; - 如果问题仍存在,在类库App.xaml中显式引用WinUI的主题资源字典兜底:
<muxc:XamlControlsResources> <muxc:XamlControlsResources.MergedDictionaries> <ResourceDictionary Source="ms-appx:///Microsoft.UI.Xaml/Themes/themeresources.xaml" /> </muxc:XamlControlsResources.MergedDictionaries> </muxc:XamlControlsResources>
内容的提问来源于stack exchange,提问作者Vlad
相关产品推荐
相关产品推荐

