2014-06-08 66 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

相關問題