建立側邊導航菜單
在 MainWindow.xaml 加入以下內容,建立側邊導航菜單
<NavigationView x:Name="NavigationView">
<NavigationView.MenuItems>
<NavigationViewItem Icon="Play" Content="第一頁" Tag="Page1" />
<NavigationViewItem Icon="Save" Content="第二頁" Tag="Page2" />
</NavigationView.MenuItems>
<Frame x:Name="ContentFrame"/>
</NavigationView>
- Icon: 圖示
- Content: 顯示文字
- Tag: 標籤,識別按鈕用
建立頁面
在專案上使用滑鼠右鍵點擊 > 加入 > 新增項目,選擇 Blank Page ,這裡命名為 Page1並使用 TextBlock 加入文字方便分辨頁面,內容如下:
<Page
x:Class="WinUi3NavigationViewTest.Page1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<Grid>
<TextBlock Text="第一頁" />
</Grid>
</Page>
再使用相同的方式做一次,建立 Page2 頁面
綁定按鈕跳轉頁面
NavigationView.SelectionChanged += (sender, args) =>
{
var selectedItem = (NavigationViewItem)args.SelectedItem;
var selectedItemTag = (string)selectedItem.Tag;
switch (selectedItemTag)
{
case "Page1":
ContentFrame.Navigate(typeof(Page1));
break;
case "Page2":
ContentFrame.Navigate(typeof(Page2));
break;
}
};
設定頁面
在畫面左下角中自動產生「設定」,目前按鈕沒有功能,該如何讓按下「設定」按鈕後跳轉到設定畫面呢?先依照上面的步驟建立一個 SettingsPage,這顆按鈕的 Tag 就是「Settings」,所以只要在我們按鈕點擊事件中增加就可以了:
NavigationView.SelectionChanged += (sender, args) =>
{
var selectedItem = (NavigationViewItem)args.SelectedItem;
var selectedItemTag = (string)selectedItem.Tag;
switch (selectedItemTag)
{
case "Page1":
ContentFrame.Navigate(typeof(Page1));
break;
case "Page2":
ContentFrame.Navigate(typeof(Page2));
break;
case "Settings":
ContentFrame.Navigate(typeof(SettingsPage));
break;
}
};
如果就是不要設定按鈕呢?只要設定 IsSettingsVisible="False" 即可:
<NavigationView x:Name="NavigationView"
IsSettingsVisible="False">
<NavigationView.MenuItems>
<NavigationViewItem Icon="Play" Content="第一頁" Tag="Page1" />
<NavigationViewItem Icon="Save" Content="第二頁" Tag="Page2" />
</NavigationView.MenuItems>
<Frame x:Name="ContentFrame" />
</NavigationView>
上一步(返回)按鈕
目前上一步的按鈕是灰色的,要啟用也很簡單:IsBackEnabled="True"如果不需要「上一步」按鈕也可以這樣隱藏:IsBackButtonVisible="Collapsed"
它按鈕事件和「設定」按鈕不一樣,按下後會觸發 BackRequested 事件:
NavigationView.BackRequested += (sender, args) =>
{
Console.WriteLine("BackRequested");
};
側邊導航菜單位置
原本側邊導航菜單位置是在左側,也可以改為放在上方:
<NavigationView PaneDisplayMode="Top">
</NavigationView>
或是使用 C#:
NavigationView.PaneDisplayMode = NavigationViewPaneDisplayMode.Top;
預設頁面和預設選取按鈕
我們目前一開始執行時並沒有選擇畫面,頁面是空的,可以直接設定選擇第一個頁面:
ContentFrame.Navigate(typeof(Page1));
讓第一個選項是選中的狀態
NavigationView.SelectedItem = NavigationView.MenuItems[0];
自訂項目標題
當側邊內容很多時,可以建立項目標題來區分:
<NavigationView x:Name="NavigationView"
IsBackEnabled="True"
IsBackButtonVisible="Collapsed">
<NavigationView.MenuItems>
<NavigationViewItem Icon="Play" Content="第一頁" Tag="Page1" />
<NavigationViewItem Icon="Save" Content="第二頁" Tag="Page2" />
<NavigationViewItemHeader Content="標題"/>
<NavigationViewItem Icon="Download" Content="第三頁" Tag="Page3" />
<NavigationViewItem Icon="Favorite" Content="第四頁" Tag="Page4" />
</NavigationView.MenuItems>
<Frame x:Name="ContentFrame" />
</NavigationView>
留言
張貼留言
如果有任何問題、建議、想說的話或文章題目推薦,都歡迎留言或來信: a@ruyut.com