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



我试图实现一个自定义弹出菜单为我的一个应用程序栏图标按钮(类似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>

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

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

有两个问题:

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

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

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

应用栏根据主题使用默认的手机颜色。所以,与其使用应用栏的颜色,为什么不使用默认的主题颜色呢?这也会起到同样的作用。http://www.jeff.wilcox.name/2012/01/phonethememanager/这将帮助你。

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

希望这有帮助。欢呼声

你可以从名为"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}" />

这样你就不用担心手机的深色或浅色主题了。

相关内容

  • 没有找到相关文章

最新更新