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的答案-他提出了通用解决方案。