小编hou*_*016的帖子

Windows 10 UWP,NavigationView更新BackNavigation上的选定MenuItem

我正在编写Windows 10 UWP应用,并想结合使用NavigationView和BackRequested事件处理程序来处理向后导航,但是“ GoBack”不会更新所选菜单项,这意味着当我使用后退按钮时,所选菜单项不会没改变。为了解决这个问题,我创建了一个丑陋的foreach循环,该循环MenuItem使用标签选择了背面导航。这行得通,但我想知道是否有更优雅的方法可以执行此操作, GoBack不会触发ItemInvokedSelectionChanged事件,因此我似乎无法使用这些功能。

MainPage.xaml

  <NavigationView x:Name="NavView"
                CompactModeThresholdWidth="1920" ExpandedModeThresholdWidth="1920"
                ItemInvoked="NavView_ItemInvoked"
                SelectionChanged="NavView_SelectionChanged"
                Loaded="NavView_Loaded"
                Canvas.ZIndex="0">

    <NavigationView.MenuItems>
        <NavigationViewItem x:Uid="HomeNavItem" Content="Home" Tag="home">
            <NavigationViewItem.Icon>
                <FontIcon Glyph="&#xE10F;"/>
            </NavigationViewItem.Icon>
        </NavigationViewItem>
        <NavigationViewItemSeparator/>
    </NavigationView.MenuItems>

    <NavigationView.HeaderTemplate>
        <DataTemplate>
            <Grid Margin="24,10,0,0">
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="Auto"/>
                    <ColumnDefinition/>
                </Grid.ColumnDefinitions>
                <TextBlock Style="{StaticResource TitleTextBlockStyle}"
                       FontSize="28"
                       VerticalAlignment="Center"
                       Text="Welcome"/>
                            </Grid>
        </DataTemplate>
    </NavigationView.HeaderTemplate>

    <Frame x:Name="ContentFrame" Margin="24">
        <Frame.ContentTransitions>
            <TransitionCollection>
                <NavigationThemeTransition/>
            </TransitionCollection>
        </Frame.ContentTransitions>
    </Frame>

</NavigationView>
Run Code Online (Sandbox Code Playgroud)

MainPage.xaml.cs代码段:

        public MainPage()
    {
       this.InitializeComponent();
       // initial page for ContentFrame
       ContentFrame.Navigate(typeof(HomePage));
       ContentFrame.Navigated += MainFrame_Navigated;
       SystemNavigationManager.GetForCurrentView().BackRequested += MainPage_BackRequested; …
Run Code Online (Sandbox Code Playgroud)

c# xaml navigationview uwp

4
推荐指数
1
解决办法
2360
查看次数

标签 统计

c# ×1

navigationview ×1

uwp ×1

xaml ×1