C# 导航视图未自动关闭

C# 导航视图未自动关闭,c#,uwp,uwp-xaml,C#,Uwp,Uwp Xaml,经过一段时间的往返和一些不错的谷歌搜索,我能够让导航视图运行得很好(在这一点上我有点为自己感到骄傲)。 我有两个问题(可能已连接)。主要问题是,每当我选择一个菜单项时,它会正确导航,但在选择该项时,它无法关闭/最小化左侧的菜单。(参见下面的屏幕截图) 第二个问题(我怀疑与此有关)在打开应用程序时自动选择主页的代码行不断抛出异常,因此我删除了该行。 行是Mainpage.xaml.cs上的第40行,其内容是: if (item is NavigationViewItem && it

经过一段时间的往返和一些不错的谷歌搜索,我能够让导航视图运行得很好(在这一点上我有点为自己感到骄傲)。 我有两个问题(可能已连接)。主要问题是,每当我选择一个菜单项时,它会正确导航,但在选择该项时,它无法关闭/最小化左侧的菜单。(参见下面的屏幕截图) 第二个问题(我怀疑与此有关)在打开应用程序时自动选择主页的代码行不断抛出异常,因此我删除了该行。 行是Mainpage.xaml.cs上的第40行,其内容是:

if (item is NavigationViewItem && item.Tag.ToString() == "Home_Page")
它看起来像什么。

我试图设置一个变量:

NavView.IsPanelOpen = false;
但是我找不到正确的位置来放置它

这是MainPage.xaml

    <Page

   xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
   xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
   xmlns:local="using:RussMenu"
     xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
           xmlns:mc="http://schemas.openxmlformats.org/markup- 
      compatibility/2006"
     xmlns:Custom="using:Microsoft.Toolkit.Uwp.UI.Controls"
    x:Class="RussMenu.MainPage"
    mc:Ignorable="d"
     Background="{ThemeResource 
        ApplicationPageBackgroundThemeBrush}">

     <Grid>

        <NavigationView x:Name="nvTopLevelNav"
        Loaded="nvTopLevelNav_Loaded"
        Margin="0,12,0,0"
        SelectionChanged="nvTopLevelNav_SelectionChanged"
        ItemInvoked="nvTopLevelNav_ItemInvoked"
        IsTabStop="False"

       >

    <NavigationView.MenuItems>

        <NavigationViewItem Icon="Home"  x:Name="Nav_Home">
            <TextBlock Tag="Nav_Home">Home</TextBlock>
        </NavigationViewItem>

        <NavigationViewItem Icon="SaveLocal"  
     x:Name="Nav_Submit_COAQC_Results">
            <TextBlock Tag="Nav_Submit_COAQC_Results">Submit COA/QC 
    Results</TextBlock>
        </NavigationViewItem>

        <NavigationViewItem Icon="Trim"  
        x:Name="Nav_Edit_Test_Results">
            <TextBlock Tag="Nav_Edit_Test_Results">Edit Test 
      Results</TextBlock>
          </NavigationViewItem>

        <NavigationViewItem Icon="ReportHacked"  
     x:Name="Nav_Create_Claims_Ticket">
              <TextBlock Tag="Nav_Create_Claims_Ticket">Create Claims 
Ticket</TextBlock>
        </NavigationViewItem>

        <NavigationViewItem Icon="Message"  
    x:Name="Nav_Message_Page">
            <TextBlock Tag="Nav_Message_Page">Contact 
  Leadership</TextBlock>
        </NavigationViewItem>

        <NavigationViewItem Icon="Print"  x:Name="Nav_Print_Page">
            <TextBlock Tag="Nav_Print_Page">Print</TextBlock>
        </NavigationViewItem>

        <NavigationViewItem Icon="Help"  x:Name="Nav_about">
            <TextBlock Tag="Nav_about">About</TextBlock>
        </NavigationViewItem>



    <Image Source="C:     
    Projects\Russ\RussMenu\RussMenu\Assets\Russell-Standard.jpg">  
    </Image>


    </NavigationView.MenuItems>

        <NavigationView.AutoSuggestBox>
                   <!-- See AutoSuggestBox documentation for
                 more info about how to implement search. -->
            <AutoSuggestBox x:Name="NavViewSearchBox" 
  QueryIcon="Find"/>
         </NavigationView.AutoSuggestBox>

     </NavigationView>
   <Frame x:Name="contentFrame"  HorizontalAlignment="Center" 
    VerticalAlignment="Center"   Margin="50,12,50,50"/>
  </Grid>



 </Page>

家
提交COA/QC
结果
编辑测试
结果
创建索赔
票
接触
领导层
印刷品
关于

第二个问题:

关于第一个问题,如果您想在选择项目时关闭/最小化左侧的菜单,可以添加PaneDisplayMode=“LeftCompact”。此外,您设置的框架应放置在NavigationView中。在这种情况下,扩展的侧栏不会被textBlock屏蔽

<NavigationView x:Name="nvTopLevelNav"
            Loaded="nvTopLevelNav_Loaded"​
            Margin="0,12,0,0"​
            SelectionChanged="nvTopLevelNav_SelectionChanged"​
            ItemInvoked="nvTopLevelNav_ItemInvoked"​
            IsTabStop="False"​
            PaneDisplayMode="LeftCompact"​
           >

    ...
    <Frame x:Name="contentFrame"  HorizontalAlignment="Center" 
    VerticalAlignment="Center"   Margin="50,12,50,50"/>​
</NavigationView>

...
​
关于第二个问题,出现错误的原因是您没有将标记添加到NavigationViewItem,而是添加到textblock。因此,当您尝试获取item.tag时,它将崩溃。您可以按如下所示进行更正

<NavigationViewItem Icon="Home"  x:Name="Nav_Home" Tag="Nav_Home">
                    <TextBlock>Home</TextBlock>​
</NavigationViewItem>

家​

关于第一个问题,如果您想在选择项目时关闭/最小化左侧菜单,可以添加PaneDisplayMode=“LeftCompact”。此外,您设置的框架应放置在NavigationView中。在这种情况下,扩展的侧栏不会被textBlock屏蔽

<NavigationView x:Name="nvTopLevelNav"
            Loaded="nvTopLevelNav_Loaded"​
            Margin="0,12,0,0"​
            SelectionChanged="nvTopLevelNav_SelectionChanged"​
            ItemInvoked="nvTopLevelNav_ItemInvoked"​
            IsTabStop="False"​
            PaneDisplayMode="LeftCompact"​
           >

    ...
    <Frame x:Name="contentFrame"  HorizontalAlignment="Center" 
    VerticalAlignment="Center"   Margin="50,12,50,50"/>​
</NavigationView>

...
​
关于第二个问题,出现错误的原因是您没有将标记添加到NavigationViewItem,而是添加到textblock。因此,当您尝试获取item.tag时,它将崩溃。您可以按如下所示进行更正

<NavigationViewItem Icon="Home"  x:Name="Nav_Home" Tag="Nav_Home">
                    <TextBlock>Home</TextBlock>​
</NavigationViewItem>

家​