如何右对齐WPF中的"帮助"菜单项?

pax*_*blo 45 wpf xaml visual-studio-2008

我的XAML文件中有以下(简化的)部分:

<Menu Width="Auto" Height="20" Background="#FFA9D1F4" DockPanel.Dock="Top">
    <MenuItem Header="File">
        <MenuItem Header="Exit"/>
    </MenuItem>
    <MenuItem Header="Edit">
        <MenuItem Header="Cut"/>
    </MenuItem>
    <MenuItem Header="Help">
        <MenuItem Header="About"/>
    </MenuItem>
</Menu>
Run Code Online (Sandbox Code Playgroud)

它导致:

+-------------------------------------------+
| File Edit Help                            |
+-------------------------------------------+
|                                           |
Run Code Online (Sandbox Code Playgroud)

如果我想要Help右侧的菜单项,我需要做什么:

+-------------------------------------------+
| File Edit                            Help |
+-------------------------------------------+
|                                           |
Run Code Online (Sandbox Code Playgroud)

Leo*_*rke 74

Alng相同的原则,这次你不需要网格,因此不需要知道项目的数量.除了帮助之外,将所有项目分配到左侧:)

<Menu Height="20" Background="#FFA9D1F4">
    <Menu.ItemsPanel>
        <ItemsPanelTemplate>
            <DockPanel HorizontalAlignment="Stretch"/>
        </ItemsPanelTemplate>
    </Menu.ItemsPanel>
    <MenuItem Header="File">
        <MenuItem Header="Exit"/>
    </MenuItem>
    <MenuItem Header="Edit">
        <MenuItem Header="Cut"/>
    </MenuItem>
    <MenuItem Header="Help" HorizontalAlignment="Right">
        <MenuItem Header="About"/>
    </MenuItem>
</Menu>
Run Code Online (Sandbox Code Playgroud)


Won*_*ane 7

另一个可能的答案是,如果你总是知道有多少菜单项(这使得这个答案很脆弱),就是将Menu.ItemsPanel定义为网格,将Menu设置为Stretch,适当设置Grid.ColumnDefinitions,设置MenuItems到相应的Grid.Column,并将最后一个菜单项的Horizo​​ntalAlignment设置为Right.

   <Menu  Height="20" Background="#FFA9D1F4" DockPanel.Dock="Top" HorizontalAlignment="Stretch">
        <Menu.ItemsPanel>
            <ItemsPanelTemplate>
                <Grid>
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="Auto" />
                        <ColumnDefinition Width="Auto" />
                        <ColumnDefinition Width="*" />
                    </Grid.ColumnDefinitions>
                </Grid>
            </ItemsPanelTemplate>
        </Menu.ItemsPanel>
        <MenuItem Header="File" Grid.Column="0">
            <MenuItem Header="Exit"/>
        </MenuItem>
        <MenuItem Header="Edit" Grid.Column="1">
            <MenuItem Header="Cut"/>
        </MenuItem>
        <MenuItem Header="Help" Grid.Column="2" HorizontalAlignment="Right">
            <MenuItem Header="About"/>
        </MenuItem>
    </Menu>
Run Code Online (Sandbox Code Playgroud)


Pet*_*sch 5

更改原始答案,因为它是(使用 Horizo​​ntalAlignment="Stretch")编辑菜单将一直延伸到菜单栏到帮助菜单。

还结合了 Rokke 的子菜单对齐建议......

<Menu Height="20" Background="#FFA9D1F4">
        <Menu.ItemsPanel>
            <ItemsPanelTemplate>
                <DockPanel/>
            </ItemsPanelTemplate>
        </Menu.ItemsPanel>
        <MenuItem Header="File">
            <MenuItem Header="Exit"/>
        </MenuItem>
        <MenuItem Header="Edit">
            <MenuItem Header="Cut"/>
        </MenuItem>
        <MenuItem Header="_Help" HorizontalAlignment="Right" FlowDirection="RightToLeft">
            <MenuItem Header="About..." FlowDirection="LeftToRight"/>
        </MenuItem>
    </Menu>
Run Code Online (Sandbox Code Playgroud)