1

问题是,当我的设备主题设置为深色时,在显示和隐藏ApplicationBar. 我要么想要白色,要么不想要背景。

这是一个显示它的视频

我的 XAML 文件

<phone:PhoneApplicationPage
    x:Class="AppBarTest.MainPage"
    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:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d"
    FontFamily="{StaticResource PhoneFontFamilyNormal}"
    FontSize="{StaticResource PhoneFontSizeNormal}"
    Foreground="{StaticResource PhoneForegroundBrush}"
    SupportedOrientations="Portrait" Orientation="Portrait"
    shell:SystemTray.IsVisible="True">

    <phone:PhoneApplicationPage.ApplicationBar>
        <shell:ApplicationBar Mode="Default" Opacity="1.0" IsMenuEnabled="False" IsVisible="True" BackgroundColor="#AAAAAA" ForegroundColor="Black">
            <shell:ApplicationBarIconButton IconUri="/Assets/add.png" Text="add"/>
            <shell:ApplicationBarIconButton IconUri="/Assets/delete.png" Text="delete"/>
            <shell:ApplicationBarIconButton IconUri="/Assets/feature.camera.png" Text="camera"/>
        </shell:ApplicationBar>
    </phone:PhoneApplicationPage.ApplicationBar>
    <Grid Background="White">
        <Button Content="Hide/Show" HorizontalAlignment="Center" VerticalAlignment="Top" Foreground="Black" Background="Green" Click="Button_Click" Margin="112,66,122,0" Height="150" Width="246"/>
    </Grid>
</phone:PhoneApplicationPage>


还有我的 CS 文件

public partial class MainPage : PhoneApplicationPage
{
    // Constructor
    public MainPage()
    {
        InitializeComponent();
    }

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

1 回答 1

2

这种行为是由于 ApplicationBar 实际上不是页面的一部分,而是实际上是 shell 的一部分。

包含 ApplicationBar 时,它会调整应用程序可用空间的大小。因此,您的页面不会占用 ApplicationBar 后面的空间,因此默认背景颜色会显示出来。

改变这一点的最简单方法是没有不透明的 ApplicationBar。通过向 ApplicationBar 添加一定程度的透明度(甚至 1%),它会显示在页面顶部,而不是在页面下方。
这将解决隐藏 ApplicationBar 时的问题,但您现在需要处理显示在其后面的内容。

于 2013-07-17T08:59:36.693 回答