WinUI 3 应用启动时默认导航至Home导航项的实现方法
WinUI3 启动时默认选中Home项并加载对应页面(无ViewModel实现)
不需要依赖ViewModel,直接在MainWindow的代码后置文件中即可实现需求,具体步骤如下:
1. 编写导航逻辑(MainWindow.xaml.cs)
打开MainWindow.xaml.cs,添加以下代码,实现默认选中、页面导航及后续点击切换的逻辑:
using Microsoft.UI.Xaml; using Microsoft.UI.Xaml.Controls; namespace Ankara_Online { public sealed partial class MainWindow : Window { public MainWindow() { this.InitializeComponent(); // 绑定窗口加载事件,设置默认导航 this.Loaded += MainWindow_Loaded; // 绑定导航项选择事件,处理页面切换 _navigationView.SelectionChanged += NavigationView_SelectionChanged; } private void MainWindow_Loaded(object sender, RoutedEventArgs e) { // 默认选中Home导航项 _navigationView.SelectedItem = homePageItem; // 加载Home页面 NavigateToPage("homePage"); } private void NavigationView_SelectionChanged(NavigationView sender, NavigationViewSelectionChangedEventArgs args) { if (args.SelectedItem is NavigationViewItem selectedItem) { string pageTag = selectedItem.Tag.ToString(); NavigateToPage(pageTag); // 更新导航头部文字(可选,不需要可删除) _navigationView.Header = selectedItem.Content.ToString(); } } // 根据Tag匹配页面的通用导航方法 private void NavigateToPage(string pageTag) { switch (pageTag) { case "homePage": contentFrame.Navigate(typeof(homePage)); break; case "softwareSectorFilePage": contentFrame.Navigate(typeof(softwareSectorFilePage)); break; case "DocumentationPage": contentFrame.Navigate(typeof(DocumentationPage)); break; case "SettingsPage": contentFrame.Navigate(typeof(SettingsPage)); break; } } } }
2. 关键说明
- 启动默认处理:在窗口加载完成的
MainWindow_Loaded事件中,直接指定_navigationView.SelectedItem为XAML中命名的homePageItem,同时调用导航方法加载对应页面,确保启动时选中状态和页面内容同步。 - 统一导航逻辑:通过
SelectionChanged事件处理用户后续点击其他导航项的操作,保证所有导航行为遵循同一套逻辑。 - 通用导航方法:
NavigateToPage方法根据导航项的Tag值匹配对应页面类型,避免重复编写导航代码。
3. 验证要点
- 确认所有页面类(
homePage、softwareSectorFilePage等)已正确创建,且命名空间与MainWindow一致。 - 检查XAML中的
Frame控件名称为contentFrame,与代码中的引用对应。 - 若不需要更新导航头部文字,可删除
_navigationView.Header = selectedItem.Content.ToString();这一行。
内容的提问来源于stack exchange,提问作者cptalpdeniz
相关产品推荐
相关产品推荐

