如何隐藏透视标题

本文关键字:透视 标题 隐藏 何隐藏 | 更新日期: 2023-09-27 18:13:27

我希望有一个Pivot控件,有PivotItems,但没有Pivot项目标题文本在景观(这是一个画廊在景观模式,当恢复到肖像它应该再次显示PivotItems标题)。

使文本PivotItem.Header = ""的解决方案不是很好,因为头文本占用的空间仍然被保留(因此有一个未使用的空白空间)。

我该怎么做?

如何隐藏透视标题

您可以将pivot项目的顶部Margin设置为负值以将它们向上移动:

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

它不会删除标题,但您的图库项目将在它的顶部,从而有更多的可用空间。将此与您清除标题的想法结合起来,您可能会有一个解决方案。

一个更优雅的解决方案:用一个不可见(但没有折叠)的DataTemplate:

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

您可以先保存所有数据透视项的标题,然后将所有数据透视项的标题设置为空字符串,之后所有数据透视项区域将消失。您可以使用保存的头信息来恢复它们。

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