当我像这样在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子菜单项在左边而不是右边打开
这种情况发生在触摸屏的机器上。在开始菜单中单击:
平板电脑设置
打开"其他"选项卡。
从"右撇子"更改为"左撇子"