Silverlight 如何根据当前主题更改应用程序栏中的图标?

Silverlight 如何根据当前主题更改应用程序栏中的图标?,silverlight,windows-phone-7,themes,Silverlight,Windows Phone 7,Themes,在WP7应用程序中,使应用程序栏中的图标与当前主题(亮/暗)匹配的首选方法是什么?我真的需要使用“hack”来检测当前主题,并在此基础上设置图标吗?或者有更好的方法吗?如果使用默认(白色)图像,或者创建类似的PNG透明图像,那么您不需要做任何事情;操作系统会为您处理它。我建议您存储两组图标(暗图标和亮图标),并在代码隐藏中动态创建应用程序栏。然后让用户选择他们想要的主题,并使用简单的if…else语句处理加载的图标 现在,为了确定用户正在使用哪个主题,您可以检查“PhoneLightTheMov

在WP7应用程序中,使应用程序栏中的图标与当前主题(亮/暗)匹配的首选方法是什么?我真的需要使用“hack”来检测当前主题,并在此基础上设置图标吗?或者有更好的方法吗?

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

我建议您存储两组图标(暗图标和亮图标),并在代码隐藏中动态创建应用程序栏。然后让用户选择他们想要的主题,并使用简单的if…else语句处理加载的图标

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

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

如果有帮助,请告诉我。

只需使用PhoneDarktheMeviability资源:

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

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

根据用户设置,仅显示两项中的一项。芒果有售


另一个选项是只使用一个配置了OpacityMask的映像。你可以了解更多

我想你说的是开始屏幕的图标。我说的是应用程序中的应用程序栏。不,我的意思就是我说的。如果应用程序栏图标按钮使用白色透明PNG图像,然后,当用户主题为亮而不是暗时,操作系统会处理将颜色更改为黑色。这种方法的好处是,您可以根据使用亮主题还是暗主题在应用程序栏中放置自定义颜色的图标。我正在考虑类似的事情。这看起来有点疯狂,但它确实有效。是的,看起来微软正在采取措施来实施一个更好的过程来检测正在使用的主题。在我们实际需要手动检查前景填充之前。就个人而言,我希望看到一个简单的属性,告诉我正在使用哪个主题,而不是与资源进行比较。但现在这应该对你有用。