来自 UWP 应用程序中 ResourceDictionary 的资源只能在 Xbox 上识别

Resource from ResourceDictionary in UWP app only recognized on Xbox

我正在处理的项目出现了一个特殊问题。 UWP app 的资源字典中添加的某些资源在 PC 本地 运行 时无法识别,但在 Xbox 运行 时可以识别。

当 运行从 Visual Studio 在 PC (Debug|x64) 上运行应用程序时,启动时会弹出以下异常:

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 SimpleTextBox [Line: 45 Position: 41]
  Source=<Cannot evaluate the exception source>
  StackTrace:
<Cannot evaluate the exception stack trace>

此异常在 InitializeComponent method of LoginView.xaml.cs 上触发。

样式已定义here and the ResourceDictionary is included here

我下载了原始示例 repo,运行 它确实在 xbox 上成功,但在 PC 上失败了,并提示

Cannot find a Resource with the Name/Key ViewModelLocator [Line: 8 Position: 5]'

因此我们需要向文件 JellyfinStyleResources.DeviceFamily-Desktop.xaml 添加一个 ViewModelLocator 键。

我们这样做是因为在 xbox 上,应用程序将在没有指定平台的情况下加载 JellyfinStyleResources。但是在 PC 上,存在一个名为 JellyfinStyleResources.DeviceFamily-Desktop.xaml 的文件。我们的应用程序将自动加载它的平台相关文件。

那么我们加上上面的key之后,编译器会提示更多资源丢失的错误。如果你比较这两个文件,你会发现,作者只为 xbox 编写它们,所以你需要将资源复制到文件 JellyfinStyleResources.DeviceFamily-Desktop.xaml.

完成后,您会发现该应用程序将在您的 PC 上成功 运行:)


或者您可以只删除文件 JellyfinStyleResources.DeviceFamily-Desktop.xaml、运行 应用程序并完成 :)