2011-11-04 5 views
6

PivotItemsを持ち、ピボットアイテムを持たないピボットコントロールを使用したいと思います。ランドスケープのヘッダーテキスト(ランドスケープモードのギャラリーです。ポートレートに戻すとPivotItemsヘッダーが再び表示されるはずです)。PivotItemヘッダーを非表示にするには?

ヘッダーテキストが占有する領域がまだ予約されているため(使用されていない空白があるため)、テキスト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

よりエレガントなソリューション:ちょうど(崩壊ではなく)非visibileでdeafultのHeaderTemplateを上書きするDataTemplate:

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

これはPivot.Headerのソリューションであり、Pivo​​tItem.Headerには適用されません。 – lisp

0

あなたは最初にすべてのpivotitems'ヘッダーを設定し、その後、すべてのpivotitemのヘッダを保存することができます空の文字列、その後、すべてのピボットヘッド領域が消えます。保存されたヘッダー情報を使用して復元できます。

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>(); 
関連する問題