Как загрузить MergedResources во время выполнения? Мой код не работает, как задумано

У меня есть настольное WPF-приложение, которое загружает его ресурсы из Интернета, это позволяет нам делать разные вещи, такие как... добавление рождественской темы позже по дороге в праздничные дни, если мы захотим. Чтобы загрузить тему, я бы просто заменил словарь ресурсов текущего приложения на наш собственный словарь ресурсов.

        ResourceDictionary resources = null;
        System.Net.WebClient client = new System.Net.WebClient();
        using (Stream s = client.OpenRead("http://www.mywebsite.com/MyXAMLFile.xaml"))
        {
            try
            {
                resources = (ResourceDictionary)XamlReader.Load(s);
            }
            catch
            { }
        }
        Application.Current.Resources = resources;

Ну, мы дошли до того, что я хотел разделить некоторые ресурсы на разные файлы вместо того, чтобы использовать ОДИН большой файл ресурсов, содержащий все. Я думал, что это будет довольно просто, просто используя объединенные ресурсы. Я думал, что простая модификация приведенного выше кода заставит его работать, но оказывается, что нет. Это то, что я ожидал, я должен был сделать.

//replace the last line
Application.Current.Resources = resources;
//with this line
Application.Current.Resources.MergedDictionaries.Add(resources);

Когда приложение запускается, оно просто использует обычные стили и не учитывает объединенные ресурсы, которые я добавил. Что я здесь не так делаю? Как я могу динамически добавлять объединенные ресурсы (и несколько) во время выполнения и заставить их работать должным образом?

Спасибо Кайл

1 ответ

Мои извинения, по-видимому, это работает. В предыдущем методе у меня были стили по умолчанию, определенные уже в App.xaml, и я использовал StaticResources, когда я перешел на использование объединенных словарей, мне пришлось использовать DynamicResources. Я думал, что уничтожил стили в App.xaml, но поскольку в моем решении Visual Studio было несколько проектов, я удалил стили в неправильном файле App.xaml!

Черт бы побрал Visual Studio за то, что невозможно сказать, какой файл App.xaml вы редактируете, если в одном решении несколько проектов:-).

Прости еще раз! Если бы я знал, как удалить вопрос, я бы.

Другие вопросы по тегам