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

时间:2011-04-16 14:18:18

标签: wpf wpf-controls

当我在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|_____________________________-|_|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|                                 |

我一直试图找出如何改变这一点,但我找不到任何东西。我已经尝试了像Horizo​​ntalAlignment,Horizo​​ntalContentAlignment这样的东西,但这不起作用。

另外,我注意到这个菜单方向仅适用于Windows 7,而不适用于Windows XP。最后,此菜单方向也在Visual Studio 2010 Express中!

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

5 个答案:

答案 0 :(得分:4)

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

选择1

  • 赢+ R
  • 输入“shell ::: {80F3F1D5-FECA-45F3-BC32-752C152E456E}”,按确定
  • 在“其他”下右手改为左撇子,按确定

您的菜单应该左对齐。

选择2

  • 打开注册表并更改以下条目: [HKEY_CURRENT_USER \ Software \ Microsoft \ Windows NT \ CurrentVersion \ Windows \ MenuDropAlignment] 为“0”
  • 重新启动

答案 1 :(得分:0)

您可以尝试在this MSDN page处查看FlowDirection信息:

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

答案 2 :(得分:0)

尝试像这样声明菜单的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>

答案 3 :(得分:0)

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

解决方案发布在这里: WPF Sub-MenuItem Opening on the Left Instead of the Right

答案 4 :(得分:0)

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

  

平板电脑设置

打开&#34;其他&#34;标签

改变&#34;右撇子&#34;到&#34;左撇子&#34;