Windows Phone — Преобразование Styles.xaml Mango

#silverlight #windows-phone-7 #styles

#silverlight #windows-phone-7 #стили

Вопрос:

У меня была сборка приложения с помощью Windows Phone 7.0 SDK. Теперь мне нужно обновить это приложение до Windows Phone 7.1 SDK. Когда я перенес приложение, фон всех моих страниц был изменен на черный. Однако все они были белыми (как и предполагалось), когда я использовал SDK 7.0. Как мне это исправить? С помощью SDK 7.0 все мои страницы были определены как:

 <Grid x:Name="LayoutRoot" Background="{StaticResource PhoneBackgroundBrush}">
...
</Grid>
  

Кисть PhoneBackgroundBrush определена в Styles.xaml. Этот файл содержит следующее:

 <ResourceDictionary
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  xmlns:System="clr-namespace:System;assembly=mscorlib">
  <Color x:Key="PhoneBackgroundColor">#FFFFFFFF</Color>
  <SolidColorBrush x:Key="PhoneBackgroundBrush" Color="{StaticResource PhoneBackgroundColor}"/>
  </ResourceDictionary>
  

На Styles.xaml есть ссылка в App.xaml, как показано здесь:

 <Application.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="Resources/Styles.xaml" />
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</Application.Resources>
  

Что не так? Как мне вернуть белый фон?

Ответ №1:

См. Эту статью: Переопределение тем в Windows Phone 7.5 (Mango) (прокрутите вниз, чтобы найти части Mango)

Короче говоря: вы больше не можете переопределять унаследованные стили XAML. Вы должны переопределить их в коде C #, например

 (App.Current.Resources["PhoneBackgroundBrush"] as SolidColorBrush).Color = Colors.White;