如何更改菜单栏中菜单项的方向/位置



当我像这样在XAML中创建一个菜单时:

<Menu>
    <MenuItem Height="auto" Header="{x:Static str:StringResources.File}">
        <MenuItem Header="{x:Static str:StringResources.Open}"
                  InputGestureText="Ctrl+O" 
                  Command="{Binding OpenFileCommand}"/>
        <MenuItem Header="{x:Static str:StringResources.Save}" 
                  InputGestureText="Ctrl+S" 
                  Command="{Binding SaveFileCommand}"/>
        <MenuItem Header="{x:Static str:StringResources.SaveAs}" 
                  InputGestureText="Ctrl+Shift+S" 
                  Command="{Binding SaveAsFileCommand}"/>
        <MenuItem Header="{x:Static str:StringResources.Exit}"
                  InputGestureText="Alt+F4"
                  Click="MenuItemExit_Click"
                  />
    </MenuItem>
</Menu>

菜单被折叠,菜单的边缘与顶部菜单项(在本例中为File)的边缘右对齐。这意味着菜单看起来像这样:

                  _____________________________________________
__________________|____|File|_____________________________-|_|X|
|   | Open            Ctrl+O|                                  |
|   | Save            Ctrl+S|                                  |
|   | Save As.. Ctrl+Shift+S|                                  |
|   | Exit            Alt+F4|                                  |

这看起来很丑,特别是在非最大化的窗口,折叠菜单将被绘制在窗口外面的大部分。

我想让它看起来像这样:

_______________________________________________________________
|File|____________________________________________________|-_X|
|   | Open            Ctrl+O|                                 |
|   | Save            Ctrl+S|                                 |
|   | Save As.. Ctrl+Shift+S|                                 |
|   | Exit            Alt+F4|                                 |

我一直在试图找出如何改变这一点,但我找不到任何东西。我已经尝试过像HorizontalAlignment, HorizontalContentAlignment,但那不起作用。

另外,我注意到只有在Windows 7中才有这个菜单方向,而在Windows XP中没有。最后,这个菜单方向也在Visual Studio 2010 Express中!

如果你们中有人能给我一个答案或一个方向来搜索,我将非常感激。

这似乎是本地windows机器的配置问题(检查此行为是否也出现在其他程序中)。如果是,你有两种可能来解决这个问题:

选项1

  • Win + R
  • 输入"shell:::{80F3F1D5-FECA-45F3-BC32-752C152E456E}",按Ok
  • 在"其他"下将右手改为左手,按Ok

你的菜单应该左对齐。

选择2

  • 打开注册表并更改以下条目:微软软件 [HKEY_CURRENT_USER Windows NT CurrentVersion Windows MenuDropAlignment]"0"
  • 重新启动

您可以尝试在此MSDN页面查看FlowDirection,信息:

<MenuItem FlowDirection="LeftToRight">
</MenuItem>

尝试像这样为菜单声明itemsPanelTemplate -

  <Menu>
      <Menu.ItemsPanel>
          <ItemsPanelTemplate>
               <DockPanel HorizontalAlignment="Left"/>
          </ItemsPanelTemplate>
      </Menu.ItemsPanel>
    <MenuItem Height="auto" Header="{x:Static str:StringResources.File}">
        <MenuItem Header="{x:Static str:StringResources.Open}"
                  InputGestureText="Ctrl+O" 
                  Command="{Binding OpenFileCommand}"/>
        <MenuItem Header="{x:Static str:StringResources.Save}" 
                  InputGestureText="Ctrl+S" 
                  Command="{Binding SaveFileCommand}"/>
        <MenuItem Header="{x:Static str:StringResources.SaveAs}" 
                  InputGestureText="Ctrl+Shift+S" 
                  Command="{Binding SaveAsFileCommand}"/>
        <MenuItem Header="{x:Static str:StringResources.Exit}"
                  InputGestureText="Alt+F4"
                  Click="MenuItemExit_Click"
                  />
    </MenuItem>
</Menu>

您必须更改注册表中的条目。

解决方案张贴在这里:WPF子菜单项在左边而不是右边打开

这种情况发生在触摸屏的机器上。在开始菜单中单击:

平板电脑设置

打开"其他"选项卡。

从"右撇子"更改为"左撇子"

最新更新