У меня есть приложение для Windows Phone, и я хочу иметь различные тематические ресурсы в зависимости от того, имеет ли пользователь темную или светлую тему и какой цвет акцента он выбрал.
В моем коде инициализации приложения я обнаруживаюПользовательская тема и цвет акцента затем загружают соответствующий словарь ресурсов, темный, светлый и т. д. Я добавляю словарь ресурсов в коллекцию App.Current.Resources.MergedDictionaries
.
Проблема возникает, когда я хочу сослаться на значение в (динамически загружаемом) из моего приложения.В приведенном ниже примере ключ «DefaultBackgroundImageOpacity».По какой-то причине значения в ResourceDictionary, которые я загружаю в коллекцию MergedDictionaries, никогда не обнаруживаются, когда происходит анализ App.Xaml.Я играл с загрузкой ресурсов, прежде чем я вызову InitializeComponent () и после.Ни один из них, похоже, не решил проблему.
Есть идеи?
// Simplified version of adding some xaml...
// Note I'm loading the key "DefaultBackgroundImageOpacity"
this.Resources.MergedDictionaries.Clear();
var myTestXaml = "<ResourceDictionary xmlns='http://schemas.microsoft.com/winfx/2006/xaml/presentation' xmlns:x='http://schemas.microsoft.com/winfx/2006/xaml' xmlns:System='clr-namespace:System;assembly=mscorlib'> <System:Double x:Key='DefaultBackgroundImageOpacity'>0.2</System:Double></ResourceDictionary>";
this.Resources.MergedDictionaries.Add((ResourceDictionary)XamlReader.Load(myTestXaml));
// This always fails saying that the key "DefaultBackgroundImageOpacity"
// can not be foudnd - even though it was loaded just above
InitializeComponent();
// Phone-specific initialization
InitializePhoneApplication();