For reference, I am including Horizontal alignment question which is even referenced in the comments of our legacy codebase.
The code is in a .xaml file, the relevant part is:
<MenuItem Header="Help" HorizontalAlignment="Right">
<MenuItem Header="About"></MenuItem>
</MenuItem>
This code builds. However, when debugging the code, what I see is
I would like to correct this, so that one can see the entire word "Help".
Is there an offset-mechanism in the WPF XAML file or some other way to do this?
NOTE: I have found my own 'hack' that seems to fix the problem, simply adding spaces after Help within the quote-marks works and makes it display better, but surely there must be a more elegant way:
<MenuItem Header ="Help " HorizontalAlignment="Right">
<MenuItem Header="About" CommandParameter="Help_About"></MenuItem>
</MenuItem>
Per request, this is the entire context of the menu, some of the items have been obfuscated since they may be proprietary:
<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>
Then, per comment suggestion, I tried a simple text block and it appears to be on the left, whether or not the HorizontalAligment = "Right" directive is in the code:
<TextBlock HorizontalAlignment="Right" >Help me </TextBlock>
Put your Menu
inside DockPanel
instead:
<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>
Disclaimer: I haven't tested this code, but I'm pretty sure it should help you to solve this issue.