我正在尝试为我的应用栏图标按钮(类似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)如何使用上一步检索的颜色使堆栈面板不透明?现在我看到它下面的主要内容,即使我明确指定了背景画笔。
答案 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}" />
这样您就不必担心手机暗或亮的主题。