首页 > 解决方案 > WPF (.Net5) 下拉菜单 - 菜单项未与主菜单对齐

问题描述

我在主网格的第一行创建了一个带有菜单栏的简单 WPF 应用程序。我在网格中添加了几个菜单项:

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="20"/>
        <RowDefinition Height="*"/>
        <RowDefinition Height="20"/>
    </Grid.RowDefinitions>

    <Menu x:Name="MainMenuBar" Grid.Row="0" HorizontalContentAlignment="Left">
        <MenuItem Header="_File" HorizontalContentAlignment="Left">
            <MenuItem x:Name="NewProjectMenuItem"
                      Header="_New Project"
                      InputGestureText="Ctrl+N"
                      Click="NewProjectMenuItem_Click"
                      HorizontalAlignment="Left"/>
            <MenuItem x:Name="OpenProjectMenuItem" 
                      Header="_Open Project" 
                      InputGestureText="Ctrl+O" 
                      Click="OpenProjectMenuItem_Click" 
                      HorizontalAlignment="Left"/>
            <MenuItem x:Name="CloseProjectMenuItem" 
                      Header="_Close Project" 
                      Click="CloseProjectMenuItem_Click" 
                      HorizontalAlignment="Left"/>
            <Separator/>
            <MenuItem x:Name="SaveProjectMenuItem" 
                      Header="_Save Project" 
                      InputGestureText="Ctrl+S" 
                      Click="SaveProjectMenuItem_Click" 
                      HorizontalAlignment="Left"/>
        </MenuItem>
        <MenuItem Header="_Edit" HorizontalContentAlignment="Left">
            <MenuItem x:Name="ToggleIncludeInBuild" 
                      Header="Toggle Include in _Build" 
                      InputGestureText="Shift+F1" 
                      Click="ToggleIncludeInBuild_Click" 
                      HorizontalAlignment="Left"/>
        </MenuItem>
    </Menu>
    <Grid x:Name="ContenGrid" Grid.Row="1"></Grid>
    <StatusBar x:Name="StatusBar" Grid.Row="2"></StatusBar>
</Grid>

当我单击“文件”或“编辑”菜单项时,子菜单项与下拉菜单在 Windows 窗体应用程序中的正常行为方式不一致。它们与子菜单项的右边缘与父菜单的右边缘对齐。

标签: c#wpf.net-5

解决方案


我有一个类似的问题。发现它实际上是 Windows 设置而不是 WPF 设置。我在一台笔记本电脑上编程,它有一个默认为右手菜单模式的触摸屏。如果您注意到 Visual Studio 也在这样做,这不是代码问题,而是 Windows 10 设置。

这为我解决了


推荐阅读