为什么应用程序级资源不起作用

时间:2014-03-21 13:22:41

标签: c# windows-phone-8

我想在我的网页中实现应用程序级资源,但似乎无法正常工作。

的App.xaml:

<Application.Resources>
<Style TargetType="phone:PhoneApplicationPage">
   <Setter Property="Background" Value="White" />
   <Setter Property="Foreground" Value="Black" />
   <Setter Property="shell:SystemTray.ForegroundColor" Value="Black"></Setter>
   <Setter Property="shell:SystemTray.BackgroundColor" Value="Transparent"></Setter>
   <Setter Property="shell:SystemTray.Opacity" Value="0.5"></Setter>
</Style>
</Application.Resources>

页面

<phone:PhoneApplicationPage
...
    SupportedOrientations="Portrait"  Orientation="Portrait"
    shell:SystemTray.IsVisible="True" >
</phone:PhoneApplicationPage>

我希望系统托盘看起来应该像App.xaml中的样式一样,但它没有。

谢谢!

1 个答案:

答案 0 :(得分:0)

自Mango以来,应用程序范围的隐式样式适用于Windows Phone。您需要记住的是隐式样式仅应用于TargetType,而不应用于其后代。您的页面是来自PhoneApplicationPage的继承的新类。将起作用的是:

<Application.Resources>
  <Style TargetType="local:MainPage">
    <Setter Property="Foreground" Value="Black" />
    <Setter Property="shell:SystemTray.ForegroundColor" Value="Black"/>
  </Style>
</Application.Resources>

但显然你必须为项目中的每个页面定义它,这使它变得毫无用处。对于Pages,最好使用显式样式(使用x:Key):

<Application.Resources>
  <Style x:Key="PageStyle" TargetType="phone:PhoneApplicationPage">
    <Setter Property="Foreground" Value="Black" />
    <Setter Property="shell:SystemTray.ForegroundColor" Value="Black"/>
  </Style>
</Application.Resources>

,对于项目中的每个页面,只需:

<phone:PhoneApplicationPage 
  Style="{StaticResource PageStyle}"