2013-12-24 1 views
0

Я хочу, чтобы изменить тему приложения, даже когда приложение запустилось.Как использовать динамическое значение цвета фона элементов?

Так я определил ресурс:

<Application.Resources> 
    <SolidColorBrush x:Key="AppBrush" Color="#AAAAAA"/> 
</Application.Resources> 

использовал его через приложение:

<... Background="{StaticResource AppBrush}" .. /> 

и я могу изменил его в конструктор App «s:

((SolidColorBrush)Resources["AppBrush"]).Color = color; 

Теперь я могу изменить это хорошо, но пользователь должен перезапустить приложение, чтобы изменения вступили в силу. Я не могу использовать последнюю строку кода где-то внутри приложения. Я получаю ошибку памяти.

Как изменить тему приложения изнутри приложения и увидеть изменения?

+0

не имеет решения для этого? :) – user3129221

ответ

0

Ошибка произошла из-за того, что ресурс AppBrush определен в App.xaml, и вы хотите получить к нему доступ извне App.xaml, используя тот же код. Вы должны изменить код немного явно рассказывал приложение, чтобы найти ресурс в App.xaml:

((SolidColorBrush)App.Current.Resources["AppBrush"]).Color = color; 

Без этого, приложение будет в конечном итоге ищет AppBrush ресурса в текущей странице, то не смог найти его.

0

К сожалению, Windows Phone не поддерживает DynamicResource. Таким образом, у вас есть 2 варианта:

1) просто примите ограничение и потребуйте перезапуск 2) привяжите содержимое (что бы это ни было, фон сетки, кнопка и т. Д.) К свойству viewModel, которое возвращает цвет. то вы можете изменить цвет и вызвать notifypropertychanged, чтобы сразу же обновить пользовательский интерфейс.

Сообщите мне, если вы не знаете, как реализовать (2).

Смежные вопросы