5

Myślę, że ma to banalną odpowiedź, ale nie dostaję tego. Zasadniczo mam aplikację Windows Phone 8 zawierającą Pivot i pasek aplikacji. Chcę ukryć pasek aplikacji po przejściu do określonej strony w Pivocie.Jak ukryć pasek aplikacji na niektórych stronach przestawnych w systemie Windows Phone 8

Co zrobiłem było dodać następujący kod w przypadku Pivot_SelectionChanged:

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

Więc kiedy 3rd strona jest widoczna, na pasku aplikacji jest ukryta, i powinien być pokazany podczas 3rd strona jest nawigacja z dala od . Jednak po uruchomieniu aplikacji pojawia się błąd NullReference dla AppBar.

Starałem się umieścić go wewnątrz Dispatcher.BeginInvoke:

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

Działa on przez pierwsze kilka kiepskie piwo, ale wywołuje wyjątek NullReference na trzeciej stronie.

Czy jestem całkowicie na niewłaściwym torze, czy jest łatwiejszy sposób na zrobienie tego?

+0

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

+0

@Vovich ah tak Widziałem ten post . jednak nie zdawałem sobie sprawy, że ApplicationBar nie jest nazwą zdefiniowaną przez użytkownika. Pomyślałem także, że jest inny (i inny) sposób robienia tego w WP8. Ale dzięki za wskazanie tego! – Devmonster

Odpowiedz

9

Nie stosować nazwę nadaną przez ciebie do ApplicationBar użyć ApplicationBar własność strony Zamiast:

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

tj Wymień AppBar z ApplicationBar

+0

To takie proste. Dziękuję Ci! – Devmonster

1

Można tworzyć pasek aplikacji dla niektórych elementów przestawnych na stronie przestawnej, np. id.If id = 0, automatycznie przeniesie stronę 0. Nie zapomnij użyć appBarUtils. Możesz znaleźć here. Korzystając z tego, możesz wybrać, które wszystkie paski mają się znajdować na całych stronach przestawnych i na selektywnych stronach przestawnych.

<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

To jest naprawdę niesamowite rozszerzenie paska aplikacji do ramy Caliburn.micro. Pozwoli Ci to na obsługę widoczności i struktury paska aplikacji z ViewModel, a nie za kodem.

https://github.com/kamranayub/CaliburnBindableAppBar

Jeśli miałaś spróbowałem, gorąco polecam przyjrzeniu Caliburn.micro dla Windows Phone 8. To naprawdę robi wielką pracę upraszczające rozwój WP8.

Powiązane problemy