Windows phone 8 获取WP8中应用程序栏的有效背景色

Windows phone 8 获取WP8中应用程序栏的有效背景色,windows-phone-8,background-color,popupmenu,application-bar,Windows Phone 8,Background Color,Popupmenu,Application Bar,我正在尝试为我的一个应用程序栏图标按钮(类似于工具)实现一个自定义弹出菜单。我使用的是垂直堆叠面板: 当用户按下应用程序栏按钮时显示: void appBarIconButtonList\u单击(对象发送者,事件参数e) { popupMenuListCommands.Visibility=可见性.Visibility; ApplicationBar.IsVisible=false; } 有两个问题: 1) 如何检索应用程序栏的有效颜色以在堆栈面板中使用它?ApplicationBar.B

我正在尝试为我的一个应用程序栏图标按钮(类似于工具)实现一个自定义弹出菜单。我使用的是垂直堆叠面板:


当用户按下应用程序栏按钮时显示:

void appBarIconButtonList\u单击(对象发送者,事件参数e)
{
popupMenuListCommands.Visibility=可见性.Visibility;
ApplicationBar.IsVisible=false;
}
有两个问题:

1) 如何检索应用程序栏的有效颜色以在堆栈面板中使用它?ApplicationBar.BackgroundColor返回#00000000,但显然应用程序栏背景的有效颜色不是这个。例如,当“深色手机”主题处于启用状态时,它是深灰色的

如果我们不能动态地检索这个颜色,也许我们只需要为深色和白色主题硬编码2个颜色值。那么问题是他们的价值观是什么


2) 如何使用上一步检索到的颜色使堆栈面板不透明?现在,即使我明确指定了背景画笔,我也能看到它下面的主要内容。

应用程序栏根据主题使用默认的手机颜色。那么,为什么不使用默认的主题颜色来代替应用程序栏颜色呢?这也将起到同样的作用。这对你有帮助

对于深色主题,颜色为rgb(31,31,31)。 对于灯光主题,颜色为rgb(22122122121)

希望这有帮助。
干杯

您可以从名为“PhoneChromeBrush”的应用程序资源中获得应用程序栏的颜色。 因此,您所需要做的就是将堆栈面板背景设置为该笔刷

    <StackPanel x:Name="popupMenuListCommands" Grid.Row="1" 
        Orientation="Vertical" VerticalAlignment="Bottom" 
        Background="{StaticResource PhoneChromeBrush}"
        Visibility="Collapsed">
<TextBlock Text="menu item 1" Style="{StaticResource PopupMenuListCommand}" />
<TextBlock Text="menu item 2" Style="{StaticResource PopupMenuListCommand}" />


这样,您就不必担心手机的暗或亮主题。

请参阅Dacian Mujdar的答案-他提出了通用解决方案。