作为参考,我包括了水平对齐问题,它甚至在我们遗留代码库的注释中被引用。
代码在一个.xaml文件中,相关部分是:
<MenuItem Header="Help" HorizontalAlignment="Right">
<MenuItem Header="About"></MenuItem>
</MenuItem>
此代码构建。然而,在调试代码时,我看到的是
我想更正这一点,以便可以看到整个“帮助”一词。
WPF XAML 文件中是否有偏移机制或其他一些方法?
注意:我发现我自己的“技巧”似乎可以解决问题,只需在引号内的“帮助”后添加空格即可使其显示效果更好,但肯定有更优雅的方法:
<MenuItem Header ="Help " HorizontalAlignment="Right">
<MenuItem Header="About" CommandParameter="Help_About"></MenuItem>
</MenuItem>
根据要求,这是菜单的整个上下文,一些项目已被混淆,因为它们可能是专有的:
<Menu xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Name="appFrameworkMainMenu"
Grid.Row="0">
<Menu.ItemsPanel>
<ItemsPanelTemplate>
<DockPanel HorizontalAlignment="Stretch"/>
</ItemsPanelTemplate>
</Menu.ItemsPanel>
<MenuItem Name="Name1" Header="File">
<MenuItem Header="MenuItem1a" ></MenuItem>
<Separator />
<MenuItem Header="Exit Application" ></MenuItem>
</MenuItem>
<MenuItem Name="Name2" Header="File">
<MenuItem Header="MenuItem2a" ></MenuItem>
<MenuItem Header="MenuItem2b" ></MenuItem>
</MenuItem>
<MenuItem Name="Name3" Header="File">
<MenuItem Header="MenuItem3a" ></MenuItem>
<MenuItem Header="MenuItem3b" ></MenuItem>
</MenuItem>
<!-- align right: http://stackoverflow.com/questions/3023638/how-do-i-right-align-the-help-menu-item-in-wpf -->
<MenuItem Header ="Help " HorizontalAlignment="Right" >
<MenuItem Header="About" ></MenuItem>
</MenuItem>
</Menu>
然后,根据评论建议,我尝试了一个简单的文本块,它似乎在左侧,无论 HorizontalAligment = "Right" 指令是否在代码中:
<TextBlock HorizontalAlignment="Right" >Help me </TextBlock>
把你的
Menu
放在里面DockPanel
代替:
<Window x:Class="WpfTutorialSamples.Common_interface_controls.MenuSample"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MenuSample" Height="600" Width="800">
<DockPanel>
<Menu DockPanel.Dock="Top" Name="appFrameworkMainMenu">
<Menu.ItemsPanel>
<ItemsPanelTemplate>
<DockPanel HorizontalAlignment="Stretch"/>
</ItemsPanelTemplate>
</Menu.ItemsPanel>
<MenuItem Name="Name1" Header="File">
<MenuItem Header="MenuItem1a" />
<Separator />
<MenuItem Header="Exit Application" />
</MenuItem>
<MenuItem Name="Name2" Header="File">
<MenuItem Header="MenuItem2a" />
<MenuItem Header="MenuItem2b" />
</MenuItem>
<MenuItem Name="Name3" Header="File">
<MenuItem Header="MenuItem3a" />
<MenuItem Header="MenuItem3b" />
</MenuItem>
<MenuItem Header ="Help" HorizontalAlignment="Right">
<MenuItem Header="About" />
</MenuItem>
</Menu>
<Grid ....>
</DockPanel>
</Window>
免责声明:我没有测试过这段代码,但我很确定它应该能帮助你解决这个问题。