C# 当PaneDisplayMode为LeftCompact时,如何使框架折叠和展开?

C# 当PaneDisplayMode为LeftCompact时,如何使框架折叠和展开?,c#,uwp,uwp-navigation,C#,Uwp,Uwp Navigation,当我将PaneDisplayMode设置为LeftCompact时,NavigationPane在框架上重叠。我希望它的行为与离开PaneDisplayMode时相同。将其设置为LeftCompact或LeftMinimal会导致导航弹出按钮与框架重叠。但当导航菜单折叠时,左键会导致框架展开,就像它应该的那样。我想让LeftCompact做同样的事情 <Page x:Class="TestApp.NavShell" xmlns="http://

当我将PaneDisplayMode设置为LeftCompact时,NavigationPane在框架上重叠。我希望它的行为与离开PaneDisplayMode时相同。将其设置为LeftCompact或LeftMinimal会导致导航弹出按钮与框架重叠。但当导航菜单折叠时,左键会导致框架展开,就像它应该的那样。我想让LeftCompact做同样的事情

<Page
    x:Class="TestApp.NavShell"
    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"
    xmlns:winui="using:Microsoft.UI.Xaml.Controls"
    xmlns:wctoolkit="using:Microsoft.Toolkit.Uwp.UI.Controls"
    xmlns:local="using:TestApp"
    KeyDown="NavShell_KeyDown"
    mc:Ignorable="d"
    Background= "#FF474747">

    <!--"{ThemeResource ApplicationPageBackgroundThemeBrush}     -->
    <Page.Resources>
        
    </Page.Resources>

    <Grid x:Name="LayoutRoot">
        <Grid.RowDefinitions>
            <RowDefinition Height="40"/>
            <RowDefinition Height="*"/>
            <RowDefinition Height="25"/>
        </Grid.RowDefinitions>

        <!--<Grid.ColumnDefinitions>
            <ColumnDefinition Width="*" MinWidth="50"/>
        </Grid.ColumnDefinitions>-->

        <winui:MenuBar x:Name="MainMenu" Grid.Row="0">
            <winui:MenuBarItem Title="File">
                <MenuFlyoutItem x:Name="ImportMI" Text="Import Things" >
                    <MenuFlyoutItem.KeyboardAccelerators>
                        <KeyboardAccelerator Modifiers="Control" Key="I"/>
                    </MenuFlyoutItem.KeyboardAccelerators>
                </MenuFlyoutItem>
                <MenuFlyoutItem x:Name="ExportMI" Text="Export Things">
                    <MenuFlyoutItem.KeyboardAccelerators>
                        <KeyboardAccelerator Modifiers="Control" Key="E"/>
                    </MenuFlyoutItem.KeyboardAccelerators>
                </MenuFlyoutItem>
                <MenuFlyoutSeparator />
                <MenuFlyoutItem x:Name="ExitMI" Text="Exit">
                    <MenuFlyoutItem.KeyboardAccelerators>
                        <KeyboardAccelerator Modifiers="Windows" Key="X"/>
                    </MenuFlyoutItem.KeyboardAccelerators>
                </MenuFlyoutItem>
            </winui:MenuBarItem>

            <winui:MenuBarItem Title="Edit">
                <MenuFlyoutSeparator />
                <MenuFlyoutItem x:Name="CutMI" Text="Cut" >
                    <MenuFlyoutItem.KeyboardAccelerators>
                        <KeyboardAccelerator Modifiers="Control" Key="X"/>
                    </MenuFlyoutItem.KeyboardAccelerators>
                </MenuFlyoutItem>
                <MenuFlyoutItem x:Name="CopyMI" Text="Copy" >
                    <MenuFlyoutItem.KeyboardAccelerators>
                        <KeyboardAccelerator Modifiers="Control" Key="C"/>
                    </MenuFlyoutItem.KeyboardAccelerators>
                </MenuFlyoutItem>
                <MenuFlyoutItem x:Name="PasteMI" Text="Paste" >
                    <MenuFlyoutItem.KeyboardAccelerators>
                        <KeyboardAccelerator Modifiers="Control" Key="V"/>
                    </MenuFlyoutItem.KeyboardAccelerators>
                </MenuFlyoutItem>
            </winui:MenuBarItem>

            <winui:MenuBarItem Title="Help">
                <MenuFlyoutItem x:Name="HelpAboutMI" Text="About">
                </MenuFlyoutItem>
            </winui:MenuBarItem>
        </winui:MenuBar>

 
        <winui:NavigationView x:Name="navMenu" IsBackEnabled="True" IsBackButtonVisible="Collapsed" PaneDisplayMode="LeftCompact"
                              IsSettingsVisible="True" SelectionChanged="navMenu_SelectionChanged" Header="My Test App"
                              AlwaysShowHeader="True" PaneTitle="Test App" ExpandedModeThresholdWidth="100"
                              SelectionFollowsFocus="Enabled" IsTabStop="False" Grid.Row="1">
            <winui:NavigationView.MenuItems>
                <winui:NavigationViewItem Icon="Home" Content="Things">
                    <winui:NavigationViewItem.MenuItems>
                        <winui:NavigationViewItem Icon="Document" Content="More Things">
                            <winui:NavigationViewItem.MenuItems>
                                <winui:NavigationViewItem>
                                    <winui:NavigationViewItem.Content>
                                        <winui:BitmapIconSource UriSource="NewFolder\Images\Things.png" />
                                    </winui:NavigationViewItem.Content>
                                </winui:NavigationViewItem>
                            </winui:NavigationViewItem.MenuItems>
                        </winui:NavigationViewItem>
                    </winui:NavigationViewItem.MenuItems>
                </winui:NavigationViewItem>
                <winui:NavigationViewItem Icon="Document" Content="Other Things">
                            
                </winui:NavigationViewItem>
            </winui:NavigationView.MenuItems>

            <winui:NavigationView.PaneCustomContent>
                <HyperlinkButton x:Name="PaneHyperlink" Content="More info" Margin="12,0" Visibility="Collapsed" />
            </winui:NavigationView.PaneCustomContent>


            <winui:NavigationView.PaneFooter>
                <StackPanel x:Name="SettingsFooter" Orientation="Vertical" Visibility="Collapsed">
                    <winui:NavigationViewItem Icon="Setting" AutomationProperties.Name="settings" />
                </StackPanel>
            </winui:NavigationView.PaneFooter>

            <Frame x:Name="NavContent" Margin="0, 0, 0, 0">

            </Frame>
        </winui:NavigationView>

    </Grid>
</Page>

我希望它的行为与离开PaneDisplayMode时相同

NavigationView
的样式中,您可以将
RootSplitView
DisplayMode
属性设置为
CompactInline
,该属性是
NavigationView
中的
SplitView
的名称,以实现该操作

请检查以下代码:

<VisualState.Setters>
    <Setter Target="RootSplitView.DisplayMode" Value="CompactInline" />
</VisualState.Setters>
  • 打开文档大纲面板,查找并右键单击导航视图
    导航菜单
    编辑模板>编辑副本。然后,
    NavigationView
    的默认样式将复制到
    页面。Resource
    标记并应用到
    NavigationView
    控件

  • 在样式中,找到名为
    Compact
    VisualState
    ,并添加以下代码:

    <VisualState.Setters>
        <Setter Target="RootSplitView.DisplayMode" Value="CompactInline" />
    </VisualState.Setters>
    
    
    
  • 构建您的项目