我试图实现一个自定义弹出菜单为我的一个应用程序栏图标按钮(类似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}" />
这样你就不用担心手机的深色或浅色主题了。