【问题标题】:How can I make the icons in the Application Bar change depending on the current theme?如何根据当前主题更改应用程序栏中的图标?
【发布时间】:2012-02-26 10:24:41
【问题描述】:

在 WP7 应用程序中,使应用程序栏中的图标匹配当前主题(浅色/深色)的首选方法是什么?我真的需要使用“hack”来检测当前主题,并根据它设置图标,还是有更好的方法?

【问题讨论】:

    标签: silverlight windows-phone-7 themes


    【解决方案1】:

    如果您使用默认(白色)图像,或者创建类似的透明透明的白色 PNG 图像,那么您无需执行任何操作;操作系统会为您处理。

    【讨论】:

    • 我认为您在谈论开始屏幕的图标。我说的是应用程序中的应用程序栏。
    • 不,我的意思正是我所说的。如果您在应用程序栏图标按钮的透明 PNG 图像上使用白色,那么当用户主题为浅色而不是深色时,操作系统会处理将颜色更改为黑色。
    【解决方案2】:

    只需使用 PhoneDarkThemeVisibility 资源:

    <Image Source="pathToLightImage.png" Visibility="{StaticResource PhoneLightThemeVisibility}" />
    
    <Image Source="pathToDarkImage.png" Visibility="{StaticResource PhoneDarkThemeVisibility}" />
    

    根据用户设置,仅显示两项中的一项。它在芒果中可用。

    另一种选择是仅使用一个配置了 OpacityMask 的图像。您可以通过here 了解更多信息。

    【讨论】:

      【解决方案3】:

      我建议你存储两组图标,深色和浅色,并在后面的代码中动态创建应用栏。然后让用户选择他们想要的主题并使用简单的 if...else 语句处理加载的图标。

      现在,为了确定用户正在使用哪个主题,您可以查看“phonelightthemevisibility”资源。检查该资源是否可见。

      Visibility v = (Visibility)Resources["PhoneLightThemeVisibility"];
      if(v = System.Windows.Visibility.Visible)
      {
         //Use icons for light theme
      }
      else
      {
         //Use icons for dark theme
      }
      

      如果这有帮助,请告诉我。

      【讨论】:

      • 这种方法的好处是,您可以在应用栏中放置自定义彩色图标,具体取决于它们使用浅色或深色主题。
      • 我在想这样的事情。这看起来很疯狂,但它确实有效
      • 是的,微软似乎正在采取措施实施更好的流程来检测正在使用的主题。在我们实际上必须手动检查前景的填充之前。就个人而言,我希望看到一个简单的属性,它告诉我正在使用哪个主题,而不是与资源进行比较。但现在这应该适合你。
      猜你喜欢
      • 2013-07-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多