1

在我的 WinUI 3 应用程序中,我正在尝试使用位于另一个项目中的 ResourceDictionary。

假设引用的项目是ResourceTestLib,并且这个库项目有一个文件夹“Styles”,其中有一个文件“_Thickness.xaml”。

app.xaml主应用程序的文件中,我在“此处的其他合并字典”注释下方尝试了这两种方法,但它们似乎都不起作用,即应用程序在启动时崩溃并显示消息“无法找到资源......”消息.

这是我的 app.xaml:

<Application.Resources>
    <ResourceDictionary>

        <ResourceDictionary.MergedDictionaries>
            <XamlControlsResources xmlns="using:Microsoft.UI.Xaml.Controls" />

            <!-- Other merged dictionaries here -->
            <ResourceDictionary Source="/ResourceTestLib;component/Styles/_Thickness.xaml"/>
            <ResourceDictionary Source="pack://application:,,,/ResourceTestLib;component/Styles/_Thickness.xaml"></ResourceDictionary>
        </ResourceDictionary.MergedDictionaries>

    </ResourceDictionary>
</Application.Resources>

当我将鼠标悬停在相应的行上时,Visual Studio 显示一个工具提示,其中第一个引用的“Path X not found”和第二个引用ResourceDictionary的“路径中的无效字符”(可能是因为“application:,,”)消息。

我想 WinUI XAML 在这方面可能与 WPF XAML 不同?或者甚至还不支持这个?

4

1 回答 1

2

包 URI 仅在 WPF 中使用。

UWP 和 Win UI 使用 ms-appx URI 方案来引用驻留在另一个程序集中的文件,因此请尝试以下操作:

 <ResourceDictionary Source="ms-appx:///ResourceTestLib/Styles/_Thickness.xaml" />

更多关于 UWP 风格的 URI 方案:

https://docs.microsoft.com/en-us/windows/uwp/app-resources/uri-schemes

于 2021-12-06T12:36:13.200 回答