0

I'm using windows ui library and windows template studio. Currently, the winui:NavigationView.MenuItems are added in xaml.

    <winui:NavigationView>
        <winui:NavigationView.MenuItems>
            <winui:NavigationViewItem x:Uid="Shell_Main" Icon="Home" helpers:NavHelper.NavigateTo="views:MainPage" />
        </winui:NavigationView.MenuItems>
        <Grid>
            <Frame x:Name="shellFrame" />
        </Grid>
    </winui:NavigationView>

And Now I add some more items in .cs code.

        for(int i = 0; i < 5; i++)
        {
            WinUI.NavigationViewItem navigationViewItem = new WinUI.NavigationViewItem();
            navigationViewItem.Content = "AAA " + i.ToString();
            navigationView.MenuItems.Add(navigationViewItem);
        }

How to write code, when I click the added item, app navigate to the related page. A related repo is here.

enter image description here

Vincent
  • 3,124
  • 3
  • 21
  • 40

1 Answers1

1

The default configuration of windows template studio is applying an attached property(helpers:NavHelper.NavigateTo) for per NavigationViewItem.

<winui:NavigationViewItem x:Uid="Shell_Main" Icon="Document" helpers:NavHelper.NavigateTo="views:MainPage" />

So, if you want to create the NavigationViewItem in code-behind, you still need to apply the attached property for every NavigationViewItem like the following:

WinUI.NavigationViewItem navigationViewItem = new WinUI.NavigationViewItem();
navigationViewItem.Content = "AAA " + i.ToString();
navigationViewItem.SetValue(NavHelper.NavigateToProperty, typeof(Views.APage));
Xie Steven
  • 8,544
  • 1
  • 9
  • 23