c# - 如何防止WP7 白色主题上的ApplicationBar 闪烁?

标签 c# windows-phone-7 windows-phone-7.1 flicker application-bar

我有一个 Windows Phone 7.1 Mango 应用程序,我基本上成功地覆盖了内置的主题颜色。但是,如果用户选择了白色主题并且页面具有深色背景和深色应用程序栏,则应用程序栏将使用白色背景进行渲染和动画处理,这会导致烦人的闪烁。完成动画后,背景颜色会适本地设置为深色。

有没有办法禁用应用栏动画或设置其初始动画背景颜色?

查看此 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>

代码隐藏:

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

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

最佳答案

看起来在 ApplicationBar 隐藏时背景没有加载。它隐藏栏,然后加载背景,因此闪烁。

找到解决方法:将应用程序栏的不透明度设置为 0.99。它足够高,透明度不可见,并且会强制应用程序加载背景。

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

关于c# - 如何防止WP7 白色主题上的ApplicationBar 闪烁?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8748552/

相关文章:

c# - ASP.NET 无法使用 FtpWebRequest 类启用 SSL 而不会出现错误

windows-phone-7 - Windows Phone 7 的 jQuery Mobile 替代品?

windows-phone-7 - 同时运行多个 Windows Phone 7 Emulator 实例

windows-phone-7 - 如何防止 Windows Phone 的主题资源

windows-phone-7 - 一款适用于 7.1 和 7.0 的应用程序

windows-phone-7 - 应用程序启动后立即退出,同时加载库没有错误! :(

.net - 在 Windows Phone 7.1 中发送 HTTP 请求时出错

c# - 如何将当前时间设置为一个值

c# - 在 asp.net 中执行存储过程时出错

javascript - 如何将 C# 的 DateTimes 列表转换为本地 JS 日期?