2011-11-04 3 views
6

PivotItem이 있지만 피벗 항목이없는 피벗 컨트롤을 갖고 싶습니다. 가로로 된 머리글 텍스트 (가로 모드의 갤러리, 세로로 되 돌리면 PivotItems 머리글을 다시 표시해야 함).PivotItem Header를 숨기는 방법?

헤더 텍스트가 차지하는 공간이 여전히 예약되어 있으므로 (사용되지 않는 빈 공간이 있으므로) 텍스트 PivotItem.Header = ""을 만드는 해결책은 좋지 않습니다.

어떻게하면됩니까?

+2

HeaderTemplate을 설정하십시오. http://stackoverflow.com/questions/4239071/wp7-pivotcontrol-set-header-null – invalidusername

답변

6

당신은 그들을 이동하는 음의 값으로 피벗 항목의 상단 Margin을 설정할 수 있습니다 헤더를

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

그것은 제거하지 않지만, 갤러리 항목이 그 위에 수 있으므로 것 더 많은 공간을 확보하십시오. 캡션을 지우는 아이디어와 결합하면 해결할 수 있습니다.

3

더 우아한 해결책 :

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

이것은 Pivot.Header의 솔루션으로 PivotItem.Header에는 적용되지 않습니다. – lisp

0

당신은 먼저, 모든 pivotitem의 헤더를 절약하기 위해 모든 pivotitems '헤더를 설정할 수 있습니다 단지 DataTemplate을 비 공개 대상과 deafult의는 HeaderTemplate를 오버라이드 (override) (붕괴를하지만, NOT) 빈 문자열, 그 후에 모든 pivothead 영역이 사라집니다. 저장된 헤더 정보를 사용하여 복원 할 수 있습니다.

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>();