2011-11-04 15 views
6

Chcę mieć kontrolę przestawną, która zawiera elementy przestawne, ale nie ma elementu przestawnego Tekst nagłówka w układzie poziomym (jest to galeria w trybie poziomym, po przywróceniu portretu powinna wyświetlić ponownie nagłówek PivotItems).Jak ukryć nagłówek PivotItem?

Rozwiązanie polegające na tym, że tekst PivotItem.Header = "" nie jest dobry, ponieważ przestrzeń zajmowana przez tekst nagłówka jest nadal zarezerwowana (czyli puste miejsce, które nie jest używane).

Jak mogę to zrobić?

+2

Ustaw nagłówekTemplate. http://stackoverflow.com/questions/4239071/wp7-pivotcontrol-set-header-null – invalidusername

Odpowiedz

6

Można ustawić górny Margin swoich elementów obrotowych do wartości ujemnej, aby przenieść je do góry:

<controls:PivotItem Header="item1" Margin="0,-100,0,0"> 

Nie usuwa nagłówek, ale swoje elementy galeria będzie na wierzchu, a tym samym mieć więcej wolnego miejsca. Połącz to ze swoim pomysłem na wyczyszczenie napisów i możesz mieć rozwiązanie.

3

Bardziej eleganckie rozwiązanie: wystarczy zastąpić HeaderTemplate deafult z nieprzestrzegania visibile (ale nie zwinięty) DataTemplate:

<controls:Pivot.HeaderTemplate> 
    <DataTemplate> 
     <StackPanel Height="0" Width="0"> 
      <TextBlock Text="{Binding}" /> 
     </StackPanel> 
    </DataTemplate> 
</controls:Pivot.HeaderTemplate> 
+1

To jest rozwiązanie dla Pivot.Header, które nie ma zastosowania do PivotItem.Header – lisp

0

Można najpierw zapisać nagłówki wszystkich pivotitem, a następnie ustawić wszystkie nagłówek pivotitems' do pusty łańcuch, po którym zniknie cały obszar przestawny. możesz je przywrócić, używając zapisanych informacji w nagłówku.

private void ResotorePivotItemHeaders() 
    { 
     if (_pivotItemHeaders.Count == pivot.Items.Count) 
     { 
      for (int i = 0; i < _pivotItemHeaders.Count; i++) 
       (pivot.Items[i] as PivotItem).Header = _pivotItemHeaders[i]; 
     } 
    } 



    private void HidePivotItemHeaders() 
    { 
     if (pivot.Items.Count == 0) 
      return; 
     _pivotItemHeaders.Clear(); 

     for (int i = 0; i<pivot.Items.Count; i++) 
     { 
      PivotItem item = pivot.Items[i] as PivotItem; 
      _pivotItemHeaders.Add(item.Header as String); 
      item.Header = ""; 
     } 
    } 
    List<String> _pivotItemHeaders = new List<string>();