8

Tengo una aplicación para Windows Phone 7.1 Mango en la que he sobrepasado con éxito los colores del tema incorporados. Sin embargo, si el usuario tiene el tema blanco seleccionado y la página tiene un fondo oscuro y una barra oscura de aplicaciones, la barra de aplicaciones se renderiza y anima con un fondo blanco que causa un molesto parpadeo. Después de que se termina de animar el color de fondo, los conjuntos se ajustan a un color oscuro de manera apropiada.¿Cómo se puede evitar el parpadeo de ApplicationBar en el tema blanco WP7?

¿Hay alguna manera de deshabilitar la animación de la barra de aplicaciones o establecer su color de fondo de animación inicial?

ver este video capture of the flickering issue.

Xaml:

<phone:PhoneApplicationPage x:Class="AppBarFlickers.Page1" 
          xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
          xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
          xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone" 
          xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
          xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
          xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone" 
          mc:Ignorable="d" 
          d:DesignWidth="480" 
          d:DesignHeight="728" 
          SupportedOrientations="Portrait" 
          Orientation="Portrait"> 
    <Grid Background="Black"> 
     <Button Content="Toggle App Bar" 
       Margin="100,185,100,0" 
       VerticalAlignment="Top" 
       Click="ButtonClick" 
       Foreground="White" 
       Background="Black" 
       BorderBrush="White" /> 
    </Grid> 
    <phone:PhoneApplicationPage.ApplicationBar> 
     <shell:ApplicationBar BackgroundColor="Black" 
           ForegroundColor="White"> 
      <shell:ApplicationBarIconButton IconUri="/icon.png" 
              Text="Button 1" /> 
     </shell:ApplicationBar> 
    </phone:PhoneApplicationPage.ApplicationBar> 
</phone:PhoneApplicationPage> 

Código atrás:

public partial class Page1 
{ 
    public Page1() 
    { 
     InitializeComponent(); 
    } 

    private void ButtonClick(object sender, RoutedEventArgs e) 
    { 
     ApplicationBar.IsVisible = !ApplicationBar.IsVisible; 
    } 
} 

Respuesta

19

Parece que el fondo no se carga mientras el ApplicationBar se esconde. Oculta la barra, y luego carga el fondo, de ahí el parpadeo.

Encontró una solución alternativa: establezca la opacidad de la barra de aplicaciones en 0.99. Es lo suficientemente alto como para que la transparencia sea invisible y forzará a la aplicación a cargar el fondo.

<phone:PhoneApplicationPage.ApplicationBar> 
    <shell:ApplicationBar BackgroundColor="Black" ForegroundColor="White" Opacity=".99" > 
     <shell:ApplicationBarIconButton IconUri="/icon.png" Text="Button 1" /> 
    </shell:ApplicationBar> 
</phone:PhoneApplicationPage.ApplicationBar> 
+1

Dang, +25 representante para usted. Eso también explica por qué no lo está haciendo en pantallas que no tienen fondos sólidos, ya que allí tengo una barra de aplicaciones transparente. ¡Gracias! – bkaid

+1

Cómo saben este tipo de cosas :-) – Mahantesh

+0

@KooKiz gran solución. Muchas gracias. –

Cuestiones relacionadas