Проблемы с производительностью изменения фонового изображения в Windows Phone - PullRequest
1 голос
/ 13 февраля 2012

Я пишу приложение для Windows Phone, которое состоит из элемента управления Pivot, и я хочу изменить фон при переключении между различными элементами Pivot.Основываясь на информации о модели представления текущего сводного элемента, я загружу фон, который ему соответствует.

Теперь у меня есть какой-то код в обработчике onSelectionChanged моего элемента управления сводкой:

      if (currentCondition.Contains("a"))
      {
           image = new BitmapImage(new Uri("Images/a.jpg", UriKind.Relative));
      }
      else if (currentCondition.Contains("b"))
      {
           image = new BitmapImage(new Uri("Images/b", UriKind.Relative));
      }
      ImageBrush ib = new ImageBrush();
      ib.ImageSource = image;
      this.PivotControl.Background = ib;

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

Любое предложение о том, как мне подходить крешить проблему производительности?

Спасибо!

1 Ответ

4 голосов
/ 13 февраля 2012

Я не удивлен, что это вызывает проблемы с производительностью, телефон должен декодировать полноэкранное изображение каждый раз, когда вы меняете фон.Я бы предложил сделать ваш элемент управления прозрачным, а затем «стопку» изображений.Затем вы можете изменить их видимость, чтобы показать / скрыть каждого из них.Например:

<Grid>
  <Image Source="backgroundOne.jpg" Visibility="Visible"/>
  <Image Source="backgroundTwo.jpg" Visibility="Collapsed"/>

  <Pivot>
    ...
  </Pivot>
</Grid>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...