水平右对齐在 WPF 中无法正常工作

问题描述 投票:0回答:1

作为参考,我包括了水平对齐问题,它甚至在我们遗留代码库的注释中被引用。

代码在一个.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>

wpf xaml offset menuitem horizontal-alignment
1个回答
0
投票

把你的

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>

免责声明:我没有测试过这段代码,但我很确定它应该能帮助你解决这个问题。

© www.soinside.com 2019 - 2024. All rights reserved.