Установить фон для App.RootFrame из App.Resources в wp8
Друзья,
Я назначаю Background
из RootFrame
к ресурсам приложения, это работает, когда вы явно пишете имя ресурса, как показано ниже
App.RootFrame.Background = (System.Windows.Media.ImageBrush)App.Current.Resources["Theme_6"];
но если я использую ниже это не работает:
string themeName = "Theme_6";
App.RootFrame.Background = (System.Windows.Media.ImageBrush)App.Current.Resources[themeName];
Можно ли использовать 2-й вариант в wp8?
Спасибо!
1 ответ
Управление панорамой (и я думаю, что и элементы управления Pivot) имеет некоторые проблемы с поддержкой позднего связывания фоновых изображений. Когда вы жестко кодируете пути к изображениям, нет проблем с отображением статического фонового изображения.
Чтобы назначить фоновые изображения "на лету", вы должны выполнить следующие шаги;
- Создайте свойство (MainBackGroundImage) в связанном ViewModel, которое реализует интерфейс INotifyPropertyChanged (если вы используете шаблон MVVM, у вас уже есть эта инфраструктура).
- Присвойте этому свойству любой путь к изображению (это может быть также удаленный URL), когда вы хотите изменить фоновое изображение.
В вашем View подключитесь к измененному событию свойства ViewModel и обновите макет элемента управления, в котором будет появляться фоновое изображение:
void viewModel_PropertyChanged(object sender,PropertyChangedEventArgs e) { if (e.PropertyName == “MainBackGroundImage”) { this.MainPanorama.UpdateLayout(); } }
Возможно, вы посмотрите на мое приложение WP8 с открытым исходным кодом, где я получил динамические фоновые изображения.