#c# #.net #xaml #windows-8.1 #windows-phone-8.1
#c# #.net #xaml #Windows-8.1 #Windows-phone-8.1
Вопрос:
У меня есть приложение Windows 8.1 (WinRT) и некоторые библиотеки классов пользовательского интерфейса, и я пытаюсь объединить ResourceDictionaries друг с другом, чтобы лучше разделить мои ресурсы. У меня есть следующие три проекта с ресурсами:
Framework.UI.Universal (универсальная библиотека классов)
Это общий файл.xaml, содержащийся в папке Themes в этом проекте:
<ResourceDictionary>
<!-- Contains some resources used by Windows and Windows Phone -->
</ResourceDictionary>
Framework.UI.Windows (библиотека классов Windows)
Это еще один общий файл.xaml, содержащийся в папке Themes в этом проекте. Как вы можете видеть, я объединяю словарь ресурсов из универсального проекта, а также добавляю другие ресурсы.
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="ms-appx:///Framework.UI.Universal/Themes/Generic.xaml"/>
</ResourceDictionary.MergedDictionaries>
<!-- Contains Windows specific resources -->
</ResourceDictionary>
MyApp.Windows (проект приложения Windows 8.1)
Это мое приложение для Windows 8.1. Я объединяю словарь ресурсов, специфичный для Windows, в файл App.xaml, а также добавляю ресурсы, специфичные для приложения.
<Application x:Class="CurrencyConverter.Client.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:InfrastructureViews="using:Infrastructure.Client.Views"
RequestedTheme="Light">
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="ms-appx:///Framework.UI.Windows/Themes/Generic.xaml"/>
</ResourceDictionary.MergedDictionaries>
<!-- Contains Windows app specific resources -->
</ResourceDictionary>
</Application.Resources>
</Application>
Теоретически это должно работать, но при запуске я получаю исключение с сообщением об ошибке ниже:
обнаружен цикл в объединенных словарях ресурсов
Комментарии:
1. Похоже, что существуют циклические ссылки, чего нет-нет.
2. Но я вообще не добавляю циклическую ссылку, насколько я вижу.
3. Значит, у вас нет двух словарей, указывающих друг на друга и тому подобное?
4. Нет, у меня есть цепочка ресурсов. A -> B -> C. Где A — универсальные ресурсы, B — ресурсы Windows, а C — App.xaml.
Ответ №1:
Переименование Generic.xaml в Universal project в UniversalGeneric.xaml решило проблему. Похоже, это ошибка WinRT.