首页 > 解决方案 > UWP:使用 Windows.Desktop 目标设备系列触发 XamlParseException - 找不到刷子

问题描述

Package.appxmanifest文件中进行了以下更改:

前:

...
<Dependencies>
  <TargetDeviceFamily Name="Windows.Universal" MinVersion="10.0.0.0" MaxVersionTested="10.0.0.0" />
</Dependencies>
...
<Capabilities>
  <Capability Name="internetClient" />
</Capabilities>

后:

...
<Dependencies>
  <TargetDeviceFamily Name="Windows.Desktop" MinVersion="10.0.0.0" MaxVersionTested="10.0.0.0" />
</Dependencies>
...
<Capabilities>
  <Capability Name="internetClient" />
  <rescap:Capability Name="extendedBackgroundTaskTime" />
  <rescap:Capability Name="extendedExecutionUnconstrained" />
</Capabilities>

此外App.xaml.cs,还引入了一些逻辑来处理扩展执行,如本文所述(这对问题没有影响,因为删除它不会改变结果):

https://blogs.msdn.microsoft.com/mvpawardprogram/2018/01/30/non-suspending-uwp-desktop-apps/

在运行应用程序之前没有产生错误,但是在进行上述更改后,它在打开页面时突然崩溃:

Windows.UI.Xaml.Markup.XamlParseException
  HResult=0x802B000A
  Message=The text associated with this error code could not be found.

Cannot find a Resource with the Name/Key SystemControlBackgroundChromeBlackLowBrush [Line: 193 Position: 121]
  Source=Windows
  StackTrace:
   at Windows.UI.Xaml.Application.LoadComponent(Object component, Uri resourceLocator, ComponentResourceLocation componentResourceLocation)
   at ...EventsView.InitializeComponent() in ..Client\Application.UWP\obj\x86\Debug\Views\EventsView.g.i.cs:line 43
   at ..EventsView..ctor() in Client\Application.UWP\Views\EventsView.xaml.cs:line 25

第 43 行的 EventsView.xaml.gics:

global::Windows.UI.Xaml.Application.LoadComponent(this, resourceLocator, global::Windows.UI.Xaml.Controls.Primitives.ComponentResourceLocation.Application);

第 25 行的 EventsView.cs:

<DataTemplate x:Key="FooViewModelDetailsDataTemplate" x:DataType="viewmodels:FooViewModel">

我不确定将应用程序目标设备系列更改为如何Windows.Desktop突然导致应用程序无法找到某个画笔。

我已经删除了 XAML 和视图模型中的所有显式画笔分配(任何画笔),但错误仍然存​​在。

此外,在代码库中的任何地方都没有(也不存在)任何使用该名称SystemControlBackgroundChromeBlackLowBrush的代码行。

标签: windowsxamluwpenterprisewindows-community-toolkit

解决方案


可能有点晚了,但对于任何面临类似问题的人来说:当我将 TargetDeviceFamily Name 从 Windows.Universal 更改为 Windows.Desktop 时,我的应用程序总是在启动时崩溃。为了使其工作,我必须正确指定 MinVersion 和 MaxVersionTested,如Microsoft docs中所述。


推荐阅读