2014-06-08 65 views
0

我正在尝试使用Windows Phone 8开发,并从这里和那里的示例中篡改了一个小应用程序。但是,我偶然发现了一个我坚持的问题:当我将一个应用程序栏添加到页面(无论是在XAML还是在C#中)时,它都隐藏了内容的底部,无法向下滚动。Windows Phone应用程序栏隐藏页面内容

我的XAML是:

<phone:PhoneApplicationPage 
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" 
xmlns:maps="clr-namespace:Microsoft.Phone.Maps.Controls;assembly=Microsoft.Phone.Maps" 
xmlns:maptk="clr-namespace:Microsoft.Phone.Maps.Toolkit;assembly=Microsoft.Phone.Controls.Toolkit" 
xmlns:toolkit="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone.Controls.Toolkit" 
x:Class="MyApp.MainPage" 
mc:Ignorable="d" 
FontFamily="{StaticResource PhoneFontFamilyNormal}" 
FontSize="{StaticResource PhoneFontSizeNormal}" 
Foreground="{StaticResource PhoneForegroundBrush}" 
SupportedOrientations="Portrait" Orientation="Portrait" 
shell:SystemTray.IsVisible="True"> 

<!--LayoutRoot is the root grid where all page content is placed--> 
<Grid x:Name="LayoutRoot" Background="Transparent" ScrollViewer.VerticalScrollBarVisibility="Auto"> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="Auto"/> 
     <RowDefinition Height="*"/> 
    </Grid.RowDefinitions> 

    <!--TitlePanel contains the name of the application and page title--> 
    <StackPanel x:Name="TitlePanel" Grid.Row="0" Margin="12,17,0,28"> 
     <TextBlock Text="MY APPLICATION" Style="{StaticResource PhoneTextNormalStyle}" Margin="12,0"/> 
     <TextBlock x:Name="appNameText" Text="page name" Margin="9,-7,0,0" Style="{StaticResource PhoneTextTitle1Style}"/> 
    </StackPanel> 

    <!--ContentPanel - place additional content here--> 
    <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0"> 

     <maps:Map x:Name="locationMap" HorizontalAlignment="Left" Margin="10,10,0,0" VerticalAlignment="Top" Width="446" Height="347"> 
      <maptk:MapExtensions.Children> 
       <maptk:Pushpin Name="MyLocation" Visibility="Collapsed" /> 
      </maptk:MapExtensions.Children> 
     </maps:Map> 
     <Button x:Name="button" Content="Button" HorizontalAlignment="Left" Margin="165,362,0,0" VerticalAlignment="Top" Width="291" /> 
     <TextBlock x:Name="longitudeText" HorizontalAlignment="Left" Margin="338,462,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Text="longitude placeholder"/> 
     <TextBlock x:Name="latitudeText" HorizontalAlignment="Left" Margin="338,507,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Text="latitude placeholder"/> 

     <toolkit:ToggleSwitch x:Name="switch1" IsChecked="True" Content="First switch" Margin="165,424,24,76"/> 
     <toolkit:ToggleSwitch x:Name="switch2" Margin="114,482,24,10" Content="Second switch" IsChecked="True"/> 

    </Grid> 

</Grid> 

以及创建应用栏的代码: without app bar

,并用:

 // // Set the page's ApplicationBar to a new instance of ApplicationBar. 
     ApplicationBar = new ApplicationBar(); 

    // // Create a new button and set the text value to the localized string from AppResources. 
     ApplicationBarIconButton appBarButton = new ApplicationBarIconButton(new Uri("/Assets/AppBar/appbar.add.rest.png", UriKind.Relative)); 
     appBarButton.Text = AppResources.AppBarButtonText; 
     appBarButton.Click += appBarButton_Click; 
     ApplicationBar.Buttons.Add(appBarButton); 

    // // Create a new menu item with the localized string from AppResources. 
     ApplicationBarMenuItem appBarMenuItem = new ApplicationBarMenuItem(AppResources.AppBarMenuItemText); 
     ApplicationBar.MenuItems.Add(appBarMenuItem); 

,而不应用栏结果应用栏添加: with app bar

注意交换机丢失的标签。 (实际上,底部开关本身也是隐藏的,但它看起来好像无意识地绕着“固定”它。

所以,很长的问题短:有人可以请指出我做错了这种异常出现?

回答

1

页不会自动包含的ScrollViewer,所以你需要添加一个你想成为滚动围绕元素(在你的情况,我想周围的LayoutRoot电网意思)。

ScrollViewer.VerticalScrollBarVisibility="Auto"是ScrollViewer用来确定是否可见的东西,但由于没有ScrollViewer,它什么都不做(这是一个附属属性,很像Grid.Ro例如,只有在元素在网格中才有用。)

只有一种情况(我知道)应用栏实际位于页面的前面:当AppBar的不透明度不是100%。在这种情况下,页面实际上是在它后面,所以你必须管理你自己可以看到/看到/看到什么。

+0

谢谢,这是诀窍! – Manjabes

相关问题