Я пытаюсь загрузить в runtime ResourceDictionary, который хранится в файле. В C# это выглядит просто какЗагрузка ResourceDictionary в код позади в UWP/C++
ResourceDictionary resourceDictionary = new ResourceDictionary();
resourceDictionary.Source = new Uri("ms-appx:///!UWP/Styles/UWPDictionary.xaml", UriKind.Relative);
Application.Current.Resources.MergedDictionaries.Add(resourceDictionary);
, но тот же код (в C++/см) не работают:
auto rd = ref new ResourceDictionary();
rd->Source = ref new Uri("ms-appx:///!UWP/Styles/UWPDictionary.xaml");
Application::Current->Resources->MergedDictionaries->Append(rd);
Как я понимаю, этот код должен выполняться сразу после InitializeComponent()
в App.xaml .cpp. Источник установлен правильно (создание URI выполняется без каких-либо ошибок).
MergedDictionaries->Append(rd)
Последняя строка генерирует исключение:
Исключение брошено в 0x7464A6F2 (KernelBase.dll) в wp_UWP.exe: 0x40080201: WinRT родиной происхождения ошибок (параметры: 0x8000ffff, 0x00000016, 0x0D30F274). Исключение бросили в 0x7464A6F2 в wp_UWP.exe: исключение Microsoft C++: платформа :: COMException^в ячейке памяти 0x0D30F714. HRESULT: Неисправность 0x8000FFFF Катастрофические WinRT информация: Разрушительный сбой
Необработанное исключение в 0x0C9E571A (Windows.UI.Xaml.dll) в wp_UWP.exe: 0xC000027B: приложение-внутреннее исключение произошло (параметры: 0x00F1CA10, 0x00000002).
Как исправить этот код? Я не понимаю, почему он выбрал исключение «Катастрофической неудачи».
Как выяснилось, проблемы с OnLaunched() и исправлениями в App.xaml, которые имеют некоторые проблемы, сработали. Спасибо :) –