Установить фон для 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 с открытым исходным кодом, где я получил динамические фоновые изображения.

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