Obtenga la compresa efectiva de la barra de aplicaciones en WP8
-
21-12-2019 - |
Pregunta
Estoy tratando de implementar un menú emergente personalizado para uno de mi botón de icono de la barra de aplicaciones (algo como el Teléfonoflipmenu Herramienta). Estoy usando un panel de pila vertical para eso:
<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>
Se muestra cuando el usuario presiona el botón de la barra de la aplicación:
void appBarIconButtonList_Click(object sender, EventArgs e)
{
popupMenuListCommands.Visibility = Visibility.Visible;
ApplicationBar.IsVisible = false;
}
Hay 2 problemas:
1) ¿Cómo puedo recuperar el color efectivo de la barra de aplicaciones para usarla en mi panel de pila? ApplicationBar.BackgroundColor devuelve # 00000000, pero obviamente el color efectivo del fondo de la barra de aplicaciones no es esto. Por ejemplo, es un gris oscuro cuando el tema del teléfono oscuro está encendido.
Si no podemos recuperar este color dinámicamente, tal vez, solo necesitamos los valores de color de código duro 2 para los temas oscuros y blancos. Entonces, la pregunta es cuáles son sus valores?
2) ¿Cómo usar el color recuperado en el paso anterior para que el panel de pila no sea transparente? Ahora veo el contenido principal debajo de él, incluso si especifico el cepillo de fondo explícitamente.
Solución
Puede obtener el color de la barra de aplicaciones del recurso de la aplicación llamado "PhonechromeBrush". Por lo tanto, todo lo que necesita hacer es configurar el fondo del panel de pila en este cepillo.
<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}" />
De esta manera, no tiene que preocuparse por el teléfono oscuro o el tema ligero.
Otros consejos
La barra de aplicaciones utiliza un color telefónico predeterminado según el tema.Entonces, en lugar de usar el color de la barra de aplicaciones ¿Por qué no usar el color del tema predeterminado?Eso también hará lo mismo. http://www.jeff.wilcox.name/2012/01/phonethemanager/ esto te ayudará.