【问题标题】:WinUI XAML: Using a ResourceDictionary from another projectWinUI XAML:使用来自另一个项目的 ResourceDictionary
【发布时间】:2022-01-09 20:56:15
【问题描述】:

在我的 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 会为第一个引用的ResourceDictionary 显示一个工具提示,其中包含“找不到路径 X”和“路径中的无效字符”(可能是因为“应用程序:,,”)第二个消息。

我认为 WinUI XAML 在这方面可能与 WPF XAML 不同?甚至还不支持?

【问题讨论】:

  • Windows 应用 SDK 具有类似 UWP 的 XAML 而不是类似 WPF。然后使用“uwp”关键字找到问题的解决方案。这可能会有所帮助stackoverflow.com/q/44509715/12888024
  • 谢谢,相关帖子中的这种语法有效:Source="ms-appx:///ClassLibrary1/Styles/Custom.xaml"

标签: c# xaml uwp-xaml winui-3 windows-app-sdk


【解决方案1】:

Pack 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-06
    相关资源
    最近更新 更多