Pivot

Pivot 控制項可讓使用者在一小組內容區段之間輕鬆進行觸控滑動。

預設狀態下,焦點會在選取的標頭下劃底線

這是正確的控制嗎?

警告

Pivot 控制不建議用於 Windows 11 設計模式。 我們強烈建議使用以下替代方案之一:

若要建立索引標籤式 UI,請使用 TabView 控件。

若要達到常見的頂端流覽模式,我們建議使用 NavigationView,其會自動適應不同的螢幕大小,並允許更大的自定義。

NavigationView 和 Pivot 之間的一些主要差異如下:

  • Pivot 支援觸摸滑動來在項目之間切換。
  • 在 Pivot 輪播中處理溢出項目時,NavigationView 則使用選單下拉溢出,讓使用者可以看到所有項目。
  • Pivot 會處理內容區段之間的瀏覽,而 NavigationView 能讓您對瀏覽行為取得進一步的控制。

使用 NavigationView 而非 Pivot

如果您的 app UI 使用 Pivot 控制項,您可以遵循此範例,將 Pivot 轉換成 NavigationView 。

此 XAML 會建立具有 3 個內容區段的 NavigationView,例如 建立樞紐控件中的範例 Pivot。

<NavigationView x:Name="rootNavigationView" Header="Category Title"
 ItemInvoked="NavView_ItemInvoked">
    <NavigationView.MenuItems>
        <NavigationViewItem Content="Section 1" x:Name="Section1Content" />
        <NavigationViewItem Content="Section 2" x:Name="Section2Content" />
        <NavigationViewItem Content="Section 3" x:Name="Section3Content" />
    </NavigationView.MenuItems>
    
    <Frame x:Name="ContentFrame" />
</NavigationView>

<Page x:Class="AppName.Section1Page">
    <TextBlock Text="Content of section 1."/>
</Page>

<Page x:Class="AppName.Section2Page">
    <TextBlock Text="Content of section 2."/>
</Page>

<Page x:Class="AppName.Section3Page">
    <TextBlock Text="Content of section 3."/>
</Page>

NavigationView 能針對瀏覽自訂提供更大幅度的控制,並需要相對應的程式碼後置。 若要搭配上述 XAML,請使用下列後置程式碼:

private void NavView_ItemInvoked(NavigationView sender, NavigationViewItemInvokedEventArgs args)
{
   var navOptions = new FrameNavigationOptions
   {
      TransitionInfoOverride = args.RecommendedNavigationTransitionInfo,
      IsNavigationStackEnabled = false,
   };

   switch (args.InvokedItemContainer.Name)
   {
      case nameof(Section1Content):
         ContentFrame.NavigateToType(typeof(Section1Page), null, navOptions);
         break;

      case nameof(Section2Content):
         ContentFrame.NavigateToType(typeof(Section2Page), null, navOptions);
         break;

      case nameof(Section3Content):
         ContentFrame.NavigateToType(typeof(Section3Page), null, navOptions);
         break;
   }  
}

此程式碼能模擬 Pivot 控制項的內建瀏覽體驗,但無法提供內容區段之間的觸控撥動體驗。 不過正如您所見,您也可以自訂數個點,包括動畫轉換、瀏覽參數,以及堆疊功能。

建立 Pivot 控制項

警告

Pivot 控制不建議用於 Windows 11 設計模式。 我們強烈建議使用以下替代方案之一:

此 XAML 會建立具有 3 個內容區段的基本 Pivot 控制項。

<Pivot x:Name="rootPivot" Title="Category Title">
    <PivotItem Header="Section 1">
        <!--Pivot content goes here-->
        <TextBlock Text="Content of section 1."/>
    </PivotItem>
    <PivotItem Header="Section 2">
        <!--Pivot content goes here-->
        <TextBlock Text="Content of section 2."/>
    </PivotItem>
    <PivotItem Header="Section 3">
        <!--Pivot content goes here-->
        <TextBlock Text="Content of section 3."/>
    </PivotItem>
</Pivot>

樞紐分析項目

Pivot 是 ItemsControl,因此它可以包含任何類型的項目集合。 您加入至 Pivot 的任何項目,如果不是明確定義為 PivotItem,則會隱含地包裝在 PivotItem 中。 因為樞紐通常用來在內容頁面之間巡覽,所以通常會使用 XAML UI 元素直接填入 Items 集合。 或者,您可以將 ItemsSource 屬性設定為數據源。 ItemsSource 中系結的專案可以是任何類型,但如果這些專案不是明確 PivotItems,您必須定義 ItemTemplate 和 HeaderTemplate ,以指定項目的顯示方式。

您可以使用 SelectedItem 屬性來取得或設定 Pivot 的使用中專案。 使用 SelectedIndex 屬性來取得或設定使用中專案的索引。

Pivot 標頭

您可以使用 LeftHeader 和 RightHeader 屬性,將其他控件新增至 Pivot 標頭。

例如,您可以在樞紐的 RightHeader 中新增 CommandBar 。

<Pivot>
    <Pivot.RightHeader>
        <CommandBar>
                <AppBarButton Icon="Add"/>
                <AppBarSeparator/>
                <AppBarButton Icon="Edit"/>
                <AppBarButton Icon="Delete"/>
                <AppBarSeparator/>
                <AppBarButton Icon="Save"/>
        </CommandBar>
    </Pivot.RightHeader>
</Pivot>

樞軸互動

此控制項具有以下觸控手勢互動功能:

  • 輕觸 Pivot 項目標題可以導航到該標題的區塊內容。
  • 在 Pivot 項目標題上向左或向右滑動可導航至相鄰部分。
  • 在部分內容上向左或向右滑動可導覽至相鄰部分。

此控制有兩種模式:

靜止

  • 當所有 Pivot 標頭都安裝在允許的空間內時,Pivot 是靜止的。
  • 點選 Pivot 標籤可導覽至對應的頁面,但 Pivot 本身不會移動。 活動 Pivot 被突出顯示。

旋轉 木馬

  • 當所有 Pivot 標題無法容納於允許的空間時,Carousel 會旋轉。
  • 點擊 Pivot 標籤會導覽至對應的頁面,且目前的 Pivot 標籤會移動到第一個位置。
  • 旋轉木馬中從最後到第一個樞軸區塊loop旋轉。

小提示

  • 使用輪播模式時避免使用超過 5 個標頭,因為循環超過 5 個標頭可能會變得混亂。