執行飛出視窗瀏覽
飛出視窗瀏覽是一種瀏覽類型,其中功能表項目視窗會從裝置螢幕的側邊滑進 (或飛出)。 點選「漢堡」功能表,即三條水平線互相堆疊的圖示來叫用。
在本單元中,您會了解如何建置應用程式,以在 .NET Multi-platform App UI (MAUI) 中實作飛出視窗瀏覽。
什麼是飛出視窗瀏覽?
飛出視窗瀏覽會顯示功能表,提供在應用程式內切換內容的快速方法。
飛出視窗功能表由數個組件組成,分別是Header、FlyoutItems、MenuItems和Footer。
以下影像顯示飛出視窗組件的視覺範例。
由於彈出式選單不一定會顯示,因此可以用來在應用程式中概念不同的部分之間切換內容。 例如,一個選單項目可能會引導至資料輸入頁面(或多個頁面),另一個則引導至關於頁面。
.NET MAUI 應用程式中的飛出視窗瀏覽
您可以使用FlyoutItem類別在 .NET MAUI 中執行飛出視窗瀏覽。 FlyoutItem屬於 .NET MAUI 提供的 Shell 應用程式開發 範例的一部分。
在 .NET MAUI 中以飛出視窗進行瀏覽,會在點選FlyoutItem項目時發生。 FlyoutItem 會自動切換應用程式中顯示的內容。 點選 FlyoutItem設定其ShellContent 屬性時,您可以指定顯示的內容。 該屬性會指向應用程式中的頁面。
FlyoutItem必須裝載在Shell頁面中,做為應用程式的主頁面。 而且您可以隨您喜好擁有任意數量的FlyoutItem。
下列範例會建立包含兩個飛出視窗項目的飛出視窗:
<Shell xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:controls="clr-namespace:Xaminals.Controls"
xmlns:views="clr-namespace:Xaminals.Views"
x:Class="Xaminals.AppShell">
<FlyoutItem Title="Cats"
Icon="cat.png">
<Tab>
<ShellContent ContentTemplate="{DataTemplate views:CatsPage}" />
</Tab>
</FlyoutItem>
<FlyoutItem Title="Dogs"
Icon="dog.png">
<Tab>
<ShellContent ContentTemplate="{DataTemplate views:DogsPage}" />
</Tab>
</FlyoutItem>
</Shell>
建立飛出視窗
一或多個飛出視窗項目可以新增至飛出視窗。 FlyoutItem 物件代表每個彈出選單項目。 每個FlyoutItem物件都應該是您應用程式Shell子類別MainPage物件的子系。
物件 Shell 具有隱含轉換運算子,可簡化 Shell 視覺階層。 此簡化有可能,因為子類別 Shell 物件只能包含 FlyoutItem 物件或 TabBar 物件,而其只能包含 Tab 物件,而其只能包含 ShellContent 物件。
這些隱含的轉換運算子可以用來移除上一個範例中的 FlyoutItem、和 Tab 物件:
<Shell xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:controls="clr-namespace:Xaminals.Controls"
xmlns:views="clr-namespace:Xaminals.Views"
x:Class="Xaminals.AppShell">
<ShellContent Title="Cats"
Icon="cat.png"
ContentTemplate="{DataTemplate views:CatsPage}" />
<ShellContent Title="Dogs"
Icon="dog.png"
ContentTemplate="{DataTemplate views:DogsPage}" />
</Shell>
此程式碼會產生具有兩個項目的飛出視窗。 應用程式開啟時,會預設顯示 CatsPage。 點選第二個項目會顯示 DogsPage。
飛出視窗功能表項目
功能表項目可以選擇性地新增至飛出視窗。 MenuItem 物件代表每個功能表項目。 功能表項目與按鈕相似,因為點選後會導致發生動作,而非顯示頁面。
飛出視窗上的物件位置 MenuItem 取決於它們在 Shell 視覺階層中的宣告順序。 因此,任何在MenuItem物件之前宣告的FlyoutItem物件都會出現在飛出視窗中的其他FlyoutItem物件之前,而任何 在MenuItem物件之後 宣告的FlyoutItem物件都會出現在飛出視窗中的其他FlyoutItem物件之後。
<Shell ...>
...
<MenuItem Text="Help"
IconImageSource="help.png"
Command="{Binding HelpCommand}"
CommandParameter="https://learn.microsoft.com/dotnet/maui/fundamentals/shell" />
</Shell>
飛出視窗標題和頁尾
飛出視窗標頭是選擇性出現在飛出視窗頂端的內容。 您可以藉由設定 Shell.FlyoutHeader 具有可系結屬性的物件來定義標頭的外觀:
<Shell ...>
<Shell.FlyoutHeader>
<Grid>
<Image Source="header-image.png" />
</Grid>
</Shell.FlyoutHeader>
</Shell>
飛出視窗頁尾是選擇性出現在飛出視窗底部的內容。 您可以藉由設定 Shell.FlyoutFooter 具有可系結屬性的物件來定義頁尾的外觀:
<Shell ...>
<Shell.FlyoutFooter>
<Grid>
<Image Source="footer-image.png" />
</Grid>
</Shell.FlyoutFooter>
</Shell>