У меня есть проект UWP и библиотека классов для словаря тем, и некоторые стили по умолчанию для элементов управления объединены в один файл с именем «Themes.xaml», и я ссылаюсь на этот проект и просто импортирую его в «app.xaml» следующим образом:
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="GI.UI/Themes.xaml" />
<ResourceDictionary Source="/Styles/_FontSizes.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
, и он работает, как и ожидалось, но когда я создаю nuget с тем же проектом стилей и использую его вместо этого, то проект выдает исключение, он не может найти Themes.xaml по этому пути.
Обновление 1
Я также попытался добавить пустой код позади файла с помощью InitializeComponent () для ResourceDictionary «Themes.xaml», и он отлично работает, когда я импортирую, как показано ниже, но снова это работает только когда я ссылаюсь на проект и не работает с nuget.
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<theme:Themes />
<ResourceDictionary Source="/Styles/_FontSizes.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
(Themes.xaml.cs) Код словаря ресурсов позади.
using Windows.UI.Xaml;
namespace GI.UI
{
public sealed partial class Themes : ResourceDictionary
{
public Themes() => InitializeComponent();
}
}
Themes.xaml
<ResourceDictionary
x:Class="GI.UI.Themes"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:BelowWindows10version1809="http://schemas.microsoft.com/winfx/2006/xaml/presentation?IsApiContractNotPresent(Windows.Foundation.UniversalApiContract, 7)"
xmlns:Windows10version1809="http://schemas.microsoft.com/winfx/2006/xaml/presentation?IsApiContractPresent(Windows.Foundation.UniversalApiContract, 7)"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d">
<!-- some styles and themes here -->
</ResourceDictionary>
Обновление 2
Заметил это предупреждение об исключении компилятором xaml.
![enter image description here](https://i.stack.imgur.com/GsrsE.png)
Так что теперь у меня есть код этого проекта Nuget t вместе с почти пустым примером приложения, не стесняйтесь ссылаться на него из проекта, а затем попробуйте ссылаться и из пакета nuget.
url проекта : https://github.com/touseefbsb/UWP_Styles_Nuget
пакет nuget : https://www.nuget.org/packages/GI.UI/0.0.16
Я также предоставил файл nusep c в проекте, который я использовал создать пакет.
Примечание
При создании файла nuget появляется следующее предупреждение
![enter image description here](https://i.stack.imgur.com/Zi81L.png)
![enter image description here](https://i.stack.imgur.com/UyrkD.png)