5

これは簡単な答えですが、私はそれを得られません。基本的に私はピボットとアプリケーションバーを含むWindows Phone 8アプリを持っています。ピボット内の特定のページがナビゲートされているときにアプリケーションバーを非表示にしたい。私が何をしたかWindows Phone 8の特定のピボットページでアプリケーションバーを非表示にするにはどうすればいいですか?

Pivot_SelectionChangedイベントに次のコードを追加しました:

AppBar.IsVisible = !((((Pivot)sender).SelectedIndex) == 2); 

だから、3ページ目が表示されたときに、アプリケーションバーが隠されている、そして3ページ目が離れてからナビゲートされたときに表示されなければなりません。しかし、私がアプリケーションを実行すると、AppBarのNullReferenceエラーが発生します。

私はDispatcher.BeginInvokeの内側にそれを入れてみました:

Dispatcher.BeginInvoke(() => {  
     AppBar.IsVisible = !((((Pivot)sender).SelectedIndex) == 2); 
}); 

それは最初の数スワイプのために動作しますが、上の3ページ目NullReference例外が発生します。

私は完全に間違ったトラックにいるか、これを行う簡単な方法はありますか?

+0

http://stackoverflow.com/questions/6007721/is-it-possible-to-show-application-bar-for-one-pivot-item-only – Vovich

+0

@Vovichああそう私はそのポストを見た。しかし、私は、ApplicationBarがユーザー定義の名前ではないことに気づいていませんでした。そして私はWP8でこれを行う別の方法があると考えました。しかし、それを指摘してくれてありがとう! – Devmonster

答えて

9

代わりにページのApplicationBarプロパティを使用し、ApplicationBarにあなたによって与えられた名前を使用しないでください:

ApplicationBar.IsVisible = !((((Pivot)sender).SelectedIndex) == 2); 

すなわちApplicationBarアプリケーションバーを交換し

+0

そのように簡単です。ありがとうございました! – Devmonster

1

あなたが作成することができますid.Ifを使用すると、このようなピボットページの特定のピボットアイテムのアプリケーションバーid = 0の場合、自動的にページ0をピボットするようになります。appBarUtilsを使用するのを忘れています。here。これを使用して、ピボット・ページ全体と選択ピボット・ページにあるすべてのアプバを選択できます。

<phone:Pivot> 
    <i:Interaction.Triggers> 
     <appBarUtils:SelectedPivotItemChangedTrigger> 
      <appBarUtils:SelectedPivotItemChangedTrigger.SelectionMappings> 
       <appBarUtils:SelectionMapping SourceIndex="0" TargetIndex="0"/> 
      </appBarUtils:SelectedPivotItemChangedTrigger.SelectionMappings> 

      <appBarUtils:SwitchAppBarAction> 
       <appBarUtils:AppBar Id="0" BackgroundColor="{StaticResource AppBarBg}" ForegroundColor="{StaticResource Foreground}"> 
        <appBarUtils:AppBarButton IconUri="/Assets\Images\appbar.home.png" Text="home" Command="{Binding HomeNavigationCommand}"/> 
       </appBarUtils:AppBar> 

       <appBarUtils:AppBar Id="1" BackgroundColor="{StaticResource AppBarBg}" ForegroundColor="{StaticResource Foreground}"> 
        <appBarUtils:AppBarButton IconUri="/Assets\Images\appbar.home.png" Text="home" Command="{Binding HomeNavigationCommand}"/> 
       </appBarUtils:AppBar> 

       <appBarUtils:AppBar Id="2" BackgroundColor="{StaticResource AppBarBg}" ForegroundColor="{StaticResource Foreground}"> 
        <appBarUtils:AppBarButton IconUri="/Assets\Images\appbar.home.png" Text="home" Command="{Binding HomeNavigationCommand}"/> 
        <appBarUtils:AppBarButton IconUri="/Assets\Images\appbar.money.png" Text="collection" Command="{Binding CollectionPageCommand}"/> 
        <appBarUtils:AppBarButton IconUri="/Assets\Images\appbar.check.rest.png" Text="ok" Command="{Binding OrderConfirmationButtonCommand}"/> 
       </appBarUtils:AppBar> 

       <appBarUtils:AppBar Id="3" BackgroundColor="{StaticResource AppBarBg}" ForegroundColor="{StaticResource Foreground}"> 
        <appBarUtils:AppBarButton x:Name="ConfirmationAppBarButton" IconUri="/Assets\Images\appbar.cancel.rest.png" Text="cancel" Command="{Binding OrderCancelButtonCommand}"/> 
        <appBarUtils:AppBarButton IconUri="/Assets\Images\appbar.check.rest.png" Text="ok" Command="{Binding OrderConfirmationButtonCommand}" IsEnabled="{Binding Model.EnableCheck,Mode=TwoWay}" /> 
       </appBarUtils:AppBar> 

      </appBarUtils:SwitchAppBarAction> 
     </appBarUtils:SelectedPivotItemChangedTrigger> 
    </i:Interaction.Triggers> 
</phone:Pivot> 
0

これは、Caliburn.microフレームワークへの本当に素晴らしいアプリバー拡張です。 Code-Behindではなく、ViewModelからApp Barの可視性と構造を処理できるようになります。

https://github.com/kamranayub/CaliburnBindableAppBar

あなたはそれを試してみましたhaventは場合、私は強くそれは本当にWP8の開発を簡素化する素晴らしい仕事をしてのWindows Phone 8用Caliburn.microでご覧になることをお勧めします。

関連する問題