Windows Phone 8.1 uygulamasında, üç farklı renk durumuna sahip olması gereken birkaç bileşene sahip bir sayfam var. Ya kırmızı, mavi veya mevcut temanın ön plan rengi olmalıdır.Windows Phone 8.1'de tema değişikliklerini program aracılığıyla denetleme zamanı.
Bu nedenle, benim app telefondaki Koyu teması kullanılarak başlatıldıysa ve ardından kullanıcı uygulamadan çıkar ve Light temasını değiştirir ve uygulamamda tekrar başlarsa, derhal bileşenleri değiştirmem gerekir. eski temanın ön plan rengi.
Bileşenlerin farklı renkler arasında değişmesi beklendiği için (temanın ön plan rengi bunlardan yalnızca bir tanesidir) Ön Planlarını XAML
'da PhoneForegroundColor
olarak ayarlayamıyorum. Yaptığım Ne
bunu yapan bir Resuming
olay dinleyicisi eklemektir:
myTextBlock.Foreground = new SolidColorBrush((Color)Application.Current.Resources["PhoneForegroundColor"]);
Ama ... Resuming
olay güncellenmektedir Application.Current kaynaklarının önce tetiklenir, bu yüzden sonunda Daha önce olduğu gibi aynı renkte. Kullanıcı bir kez daha tekrarlanırsa, Application.Current.Resources["PhoneForegroundColor"]
'un bir önceki seferde Resuming
olayından sonra güncellendiği için çalışır.
Soru: Ben ilk doğru yer görünmüyor Resuming
beri güncellenen Application.Current.Resources["PhoneForegroundColor"]
okuyabilir?
Soru: Alternatif, ben Telefon Tema değişiklikleri akla kalmadan Kırmızı/Mavi/Devral arasında programlama yoluyla myTextBlock.Foreground
değiştirebilir, böylece başka bileşenin ForegroundColor (CSS-ish) devralmak için myTextBlock
için bir yol var Uygulamamın yaşam döngüsü içinde
Herhangi bir öneri takdir edildi! İlk soruya gelince
Çok teşekkürler! Ben de işe yarayan ilk bende var, bu yüzden bu çözümle gidiyorum :) Alternatif çözüm için, ön plana programlı olarak "{Binding TextColor, Source = {StaticResource ColorBindingProvider}}" şeklinde ayarlamalıyım. Kırmızı veya Mavi ile üzerine yazmış olabileceğime göre, XAML'deki her şey artık aktif değil ... – andrrs
Hayır, Renk ayarınızı sağlayıcının "App_Resuming" yöntemine koyabilirsiniz. Bu bir bağımlılık özelliğidir, bu nedenle tüm bağlamaları güncellemeye bildirir. Çalışma zamanında renk ayarlarını değiştirirseniz, elbette bunu bir şekilde tetiklemeniz gerekir. Mesajlaşma kullanın ya da sadece App.Current.Resources [...] aracılığıyla sağlayıcınıza ulaşın ve özelliği ayarlayın. –
Btw: Bir bağımlılık özelliği kullanmak yerine, yalnızca BindingProvider uygulamasının INotifyPropertyChanged ... –