I've written and debuged a code below:
private void myButton_Click(object sender, RoutedEventArgs e) { Color myColor = (Color)App.Current.Resources["PhoneAccentColor"]; App.Current.Resources.Remove("PhoneAccentColor"); bool contains = App.Current.Resources.Contains("PhoneAccentColor"); App.Current.Resources.Add("PhoneAccentColor", Colors.Brown); Color myCol = (Color)App.Current.Resources["PhoneAccentColor"]; // Below works LayoutRoot.Background = new SolidColorBrush((Color)App.Current.Resources["PhoneAccentColor"]); // Not working as you have to change Brush separately LayoutRoot.Background = (Brush)App.Current.Resources["PhoneAccentBrush"]; // Now working App.Current.Resources.Add("PhoneAccentBrush", new SolidColorBrush(Colors.Cyan)); LayoutRoot.Background = (Brush)App.Current.Resources["PhoneAccentBrush"]; return; } EDIT
It's working properly - but it's not the Resource you were looking for - it's just creating 'local' Resource which doesn't affect the 'real' PhoneAccentBrush - if you create new Page with Background from StaticResource it will have the default PhoneAccentBrush.
But what I managed to do:
private void myButton_Click(object sender, RoutedEventArgs e) { Color myColor = (Color)App.Current.Resources["PhoneAccentColor"]; myColor.A = 255; myColor.B = 75; myColor.G = 150; myColor.R = 150; SolidColorBrush internalBrush = (SolidColorBrush)App.Current.Resources["PhoneAccentBrush"]; internalBrush.Color = myColor; return; } You cannot remove or override StaticResourcePhoneAccentBrush, but 'locally' (for your App) you can change it's properties. It works quite fine - after this Clisk event, when I create new Page, the PhoneAccentBrush is just as I've set it.