在WP8中获取应用栏的有效背景色

时间:2014-06-03 11:31:32

标签: windows-phone-8 background-color popupmenu application-bar

我正在尝试为我的应用栏图标按钮(类似PhoneFlipMenu工具)之一实现自定义弹出菜单。我正在使用垂直StackPanel:

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

当用户按下app bar按钮时显示:

void appBarIconButtonList_Click(object sender, EventArgs e)
{
    popupMenuListCommands.Visibility = Visibility.Visible;
    ApplicationBar.IsVisible = false;
}

有两个问题:

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

如果我们无法动态检索此颜色,我们只需要为黑白主题硬编码2个颜色值。那么问题是他们的价值观是什么?

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

2 个答案:

答案 0 :(得分:1)

应用栏根据主题使用默认手机颜色。那么,为什么不使用默认的主题颜色,而不是使用应用栏颜色?这也将做同样的事情。 http://www.jeff.wilcox.name/2012/01/phonethememanager/这会对你有帮助。

对于黑暗主题,颜色为rgb(31,31,31)。 对于浅色主题,颜色为rgb(221,221,221)。

希望这有帮助。 干杯

答案 1 :(得分:0)

您可以从名为&#34; PhoneChromeBrush&#34;的应用资源中获取应用栏颜色。 所以你需要做的就是将堆栈面板背景设置为这个画笔。

    <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}" />

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