Как сделать страницу недействительной, чтобы снова включить рендеринг? - PullRequest
2 голосов
/ 29 июля 2011

У меня есть страница в моем приложении Windows Phone 7.На этой странице цвет фона задается равным StaticResource, который динамически добавляется на основе параметра настроек.

Теперь проблема в следующем: допустим, страница теперь белая, я перехожу к настройкам и на этой странице выбираю черный фон инажмите OK, чтобы вернуться (и, конечно, сбросить статические ресурсы в App.xaml).Когда я возвращаюсь на главную страницу, поскольку приложение уже имеет эту страницу в памяти, оно по-прежнему будет иметь белый фон.
Я могу подтвердить, что настройки сохранены правильно, потому что когда я выхожу и возвращаюсь, он работает отлично.

Как я могу сделать недействительным состояние рендеринга страницы Silverlight?Или, может быть, как я могу сказать, что silverlight не сохраняет страницу на navigation.back () и всегда создает свежую версию?

Я нашел какой-то метод InvalidateXXX () в UIElement, но он выглядел неуместным.

Спасибо

1 Ответ

2 голосов
/ 29 июля 2011

Я предполагаю, что вы удаляете и повторно добавляете ресурс приложения? Если это так, то привязка StaticResource по-прежнему ссылается на предыдущий экземпляр этой именованной кисти из App.xaml. Я понимаю, что привязки StaticResource не отвечают на изменение ключа, только на события INotifyPropertyChanged.

Попробуйте заменить значение цвета существующего ресурса кисти вместо замены кисти, например ::100100

(Application.Current.Resource["myColor"] as SolidColorBrush).Color = Colors.Red;

Свойство Color кисти является свойством зависимости, поэтому изменение должно обновляться везде.

* Примечание: я могу протестировать это только с SL, а не с WP7, так как здесь машина Win server 2003

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