2013-10-02 12 views
5

Mam dziwny problem z stylem mojej kontroli przestawnej. Edytowałem kopię domyślnego szablonu w wyrażeniu mieszania, ponieważ chcę usunąć cały nagłówek.Windows Phone 8: usuń nagłówek przestawny

Dostosowany styl:

<Style x:Key="PivotWithoutHeader" TargetType="phone:Pivot"> 
     <Setter Property="Margin" Value="0"/> 
     <Setter Property="Padding" Value="0"/> 
     <Setter Property="Foreground" Value="{StaticResource PhoneForegroundBrush}"/> 
     <Setter Property="Background" Value="Transparent"/> 
     <Setter Property="ItemsPanel"> 
      <Setter.Value> 
       <ItemsPanelTemplate> 
        <Grid/> 
       </ItemsPanelTemplate> 
      </Setter.Value> 
     </Setter> 
     <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="phone:Pivot"> 
        <Grid HorizontalAlignment="{TemplateBinding HorizontalAlignment}" VerticalAlignment="{TemplateBinding VerticalAlignment}"> 
         <Grid.RowDefinitions> 
          <RowDefinition Height="Auto"/> 
          <RowDefinition Height="Auto"/> 
          <RowDefinition Height="*"/> 
         </Grid.RowDefinitions> 
         <Grid Background="{TemplateBinding Background}" Grid.RowSpan="3"/> 
         <!--<ContentControl ContentTemplate="{TemplateBinding TitleTemplate}" Content="{TemplateBinding Title}" HorizontalAlignment="Left" Margin="24,17,0,-7" Style="{StaticResource PivotTitleStyle}"/>--> 
         <Primitives:PivotHeadersControl x:Name="HeadersListElement" Grid.Row="1"/> 
         <ItemsPresenter x:Name="PivotItemPresenter" Margin="{TemplateBinding Padding}" Grid.Row="2"/> 
        </Grid> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 

A korzystanie z mojego stylu:

<phone:Pivot Grid.Row="1" x:Name="Objects" ItemsSource="{Binding Profiles}" 
           Style="{StaticResource PivotWithoutHeader}"> 
         <phone:Pivot.ItemContainerStyle> 
          <Style TargetType="phone:PivotItem"> 
           <Setter Property="HorizontalAlignment" Value="Stretch" /> 
          </Style> 
         </phone:Pivot.ItemContainerStyle> 
         <phone:Pivot.ItemTemplate> 
          <DataTemplate> 
           <Grid> 
            <Image Source="Resources/homer.png"/> 
            <TextBlock Text="{Binding Name}"/> 
            <TextBlock Text="#Sample" /> 
            <Button Margin="347,0,0,0" Command="{Binding DataContext.SettingsCommand, ElementName=Objects}" CommandParameter="{Binding .}" /> 
           </Grid> 
          </DataTemplate> 
         </phone:Pivot.ItemTemplate> 
        </phone:Pivot> 

Moja myśl była po prostu usunąć lub ustawić widoczność <Primitives:PivotHeadersControl> do upadku, ale wtedy mój awarie aplikacji bez jakiejkolwiek wyjątek i następujący komunikat w moim oknie wyjściowym: "Program" [2332] TaskHost.exe "został zakończony z kodem -1073741819 (0xc0000005)" Pojawia się naruszenie dostępu "".

Przeczytałem niektóre posty, aby przejść do osi obrotu, aby nagłówek zniknął z ekranu, ale potrzebuję dostosowanego pliku przestawnego u dołu strony z kilkoma innymi elementami sterującymi znajdującymi się powyżej.

Czy ktoś ma pomysł, jak usunąć nagłówek?

EDYTOWANIE: Dla przejrzystości chcę usunąć tytuł i nagłówek.

+1

Czy dowiedzieć się, jak to zrobić? – halileohalilei

+0

Jakiś rodzaj. Proszę spojrzeć na zaznaczoną odpowiedź. – Danscho

Odpowiedz

2

Szablon kontrolki przestawnej został zmieniony w pakiecie WP8 i teraz wymaga, aby w szablonie była obecna wersja PivotHeadersControl. (Możesz go usunąć w WP7.x).
Zamiast tego wystarczy mieć zerowy wzrost lub inną "pustą" zawartość w nagłówku.

Nie jestem świadomy tego, że został on publicznie udokumentowany, ponieważ większość osób, które przeszły na wersję WP8, używa podkładki do starej wersji kontrolki. Jednak zauważyłem to na końcu artykułu na blogu pod numerem http://blog.mrlacey.co.uk/2013/01/pivot-and-panorama-have-moved-and.html

+0

Dzięki za link matowy. Chciałbym usunąć tytuł I nagłówek. Wszelkie sugestie na ten temat? Próbowałem już ustawić nieprzezroczystość i wysokość (tytuł nadal tu jest, ale pokrywa się z zawartością pivotitem). – Danscho

8

Możesz usunąć nagłówek PivotItem na kontrolerze przestawnym, zastępując właściwość Pivot.HeaderTemplate pustym DataTemplate. Jeśli próbujesz usunąć tytuł, a nie nagłówek, to chciałbym również poznać jego rozwiązanie. ^^

<phone:Pivot ItemsSource="{Binding Data}" ItemTemplate="{StaticResource CustomPivotItemTemplate}"> 
    <phone:Pivot.HeaderTemplate> 
     <DataTemplate/> 
    </phone:Pivot.HeaderTemplate> 
</phone:Pivot> 
+0

Tak Chciałbym usunąć tytuł i nagłówek. Niestety, moje pytanie nie było jednoznaczne. – Danscho

+0

Zastąpienie HeaderTemplate pustym DataTemplate powinno usunąć nagłówek i tytuł – PompolutZ

0

rozwiązanie dBlisse pracował dla mnie aby ukryć szablon nagłówka, ale w tytule grałem z marginesami, a podstęp zadziałał dla mnie, nie jestem pewien, czy to dobry pomysł, ale sprawdziłem na różnych rozdzielczościach i wygląda dobrze.

Zawiadomienie Margin="0,-39,0,0" do panelu stosu poniżej:

<phone:Pivot Background="Transparent" Margin="-12,0"> 
    <phone:Pivot.ItemTemplate> 
     <DataTemplate> 
      <StackPanel Margin="0,-39,0,0"> 
        YOUR CONTROLS HERE 
      </StackPanel> 
     </DataTemplate> 
    </phone:Pivot.ItemTemplate> 
    <phone:Pivot.HeaderTemplate> 
     <DataTemplate/> 
    </phone:Pivot.HeaderTemplate> 
</phone:Pivot> 
3

Spróbuj tego:

<UserControl.Resources> 
    <ResourceDictionary> 
     <Thickness x:Key="PivotPortraitThemePadding">0,0,0,0</Thickness> 
     <Thickness x:Key="PivotLandscapeThemePadding">0,0,0,0</Thickness> 
     <Style x:Key="PivotWithoutHeaderStyle" TargetType="Pivot"> 
      <Setter Property="Margin" Value="0"/> 
      <Setter Property="Padding" Value="0"/> 
      <Setter Property="Foreground" Value="{ThemeResource PhoneForegroundBrush}"/> 
      <Setter Property="Background" Value="Transparent"/> 
      <Setter Property="ItemsPanel"> 
       <Setter.Value> 
        <ItemsPanelTemplate> 
         <Grid/> 
        </ItemsPanelTemplate> 
       </Setter.Value> 
      </Setter> 
      <Setter Property="Template"> 
       <Setter.Value> 
        <ControlTemplate TargetType="Pivot"> 
         <Grid x:Name="RootElement" Background="{TemplateBinding Background}" HorizontalAlignment="{TemplateBinding HorizontalAlignment}" VerticalAlignment="{TemplateBinding VerticalAlignment}"> 
          <Grid.RowDefinitions> 
           <RowDefinition Height="Auto"/> 
           <RowDefinition Height="*"/> 
          </Grid.RowDefinitions> 
          <VisualStateManager.VisualStateGroups> 
           <VisualStateGroup x:Name="Orientation"> 
            <VisualState x:Name="Portrait"> 
             <Storyboard> 
              <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Margin" Storyboard.TargetName="TitleContentControl"> 
               <DiscreteObjectKeyFrame KeyTime="0" Value="0"/> 
              </ObjectAnimationUsingKeyFrames> 
             </Storyboard> 
            </VisualState> 
            <VisualState x:Name="Landscape"> 
             <Storyboard> 
              <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Margin" Storyboard.TargetName="TitleContentControl"> 
               <DiscreteObjectKeyFrame KeyTime="0" Value="0"/> 
              </ObjectAnimationUsingKeyFrames> 
             </Storyboard> 
            </VisualState> 
           </VisualStateGroup> 
          </VisualStateManager.VisualStateGroups> 
          <ContentControl x:Name="TitleContentControl" ContentTemplate="{TemplateBinding TitleTemplate}" Content="{TemplateBinding Title}" Style="{StaticResource PivotTitleContentControlStyle}" Height="0"/> 
          <ScrollViewer x:Name="ScrollViewer" HorizontalSnapPointsAlignment="Center" HorizontalSnapPointsType="MandatorySingle" HorizontalScrollBarVisibility="Hidden" Margin="0" Grid.Row="1" Template="{StaticResource ScrollViewerScrollBarlessTemplate}" VerticalSnapPointsType="None" VerticalScrollBarVisibility="Disabled" VerticalScrollMode="Disabled" VerticalContentAlignment="Stretch" ZoomMode="Disabled"> 
           <PivotPanel x:Name="Panel" VerticalAlignment="Stretch"> 
            <PivotHeaderPanel x:Name="Header" Background="{TemplateBinding BorderBrush}" Height="0" Margin="0" Visibility="Collapsed"> 
             <PivotHeaderPanel.RenderTransform> 
              <CompositeTransform x:Name="HeaderTranslateTransform" TranslateX="0"/> 
             </PivotHeaderPanel.RenderTransform> 
            </PivotHeaderPanel> 
            <ItemsPresenter x:Name="PivotItemPresenter"> 
             <ItemsPresenter.RenderTransform> 
              <TranslateTransform x:Name="ItemsPresenterTranslateTransform" X="0"/> 
             </ItemsPresenter.RenderTransform> 
            </ItemsPresenter> 
           </PivotPanel> 
          </ScrollViewer> 
         </Grid> 
        </ControlTemplate> 
       </Setter.Value> 
      </Setter> 
     </Style> 
    </ResourceDictionary> 
</UserControl.Resources> 

...

<Pivot Style="{StaticResource PivotWithoutHeaderStyle}"> 

...

+0

Działa to doskonale na systemie Windows Phone 8.1. Uważam, że z pustym szablonem danych dla nagłówka można go również używać w aplikacjach uniwersalnych. Dzięki! –

0

końcu zorientowali to! (Buduję uniwersalną aplikację Windows 10 i miałem to samo pytanie.)

Dodaj pusty HeaderTemplate do kontroli Pivot jak sugeruje dBlisse:

<Pivot ItemsPanel="{StaticResource ItemsPanelTemplate1}"> 
    <Pivot.HeaderTemplate> 
     <DataTemplate/> 
    </Pivot.HeaderTemplate> 
</Pivot> 

i dodać szablon w App.xaml:

<ItemsPanelTemplate x:Key="ItemsPanelTemplate1"> 
    <Grid Margin="0,-48,0,0"/> 
</ItemsPanelTemplate>