WPF菜单项右对齐

时间:2014-06-09 19:04:08

标签: wpf

我有以下菜单。我试图正确对齐菜单的内容。

<Menu Grid.ColumnSpan="3">
        <MenuItem Header="Items">
            <MenuItem>
                <MenuItem.Header>
                    <Grid>
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="*" />
                            <ColumnDefinition Width="Auto" />
                            <ColumnDefinition Width="Auto" />
                        </Grid.ColumnDefinitions>
                        <TextBlock Text="Item 1" Grid.Column="0" HorizontalAlignment="Stretch" />
                        <Button Grid.Column="1" Content="E" />
                        <Button Grid.Column="2" Content="D" />
                    </Grid>
                </MenuItem.Header>
            </MenuItem>
            <MenuItem>
                <MenuItem.Header>
                    <Grid>
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="*" />
                            <ColumnDefinition Width="Auto" />
                            <ColumnDefinition Width="Auto" />
                        </Grid.ColumnDefinitions>
                        <TextBlock Text="Item 2" Grid.Column="0" HorizontalAlignment="Stretch" />
                        <Button Grid.Column="1" Content="E" />
                        <Button Grid.Column="2" Content="D" />
                    </Grid>
                </MenuItem.Header>
            </MenuItem>
        </MenuItem>
    </Menu>

显示的内容如下:

 ------------------
 Item 1 D E       |
 ------------------
 Item 2 D E       |
 ------------------

E之后还有很多空间。

我期待的是:

 ------------------
 Item 1       D E |
 ------------------
 Item 2       D E |
 ------------------

我希望D和E与右边对齐,因为项目1和项目2在左边对齐。

我尝试使用Horizo​​ntalAlignment无助于找到答案。

2 个答案:

答案 0 :(得分:0)

您可以使用DockPanel而不是Grid来实现此目的。还要尝试明确设置菜单项的宽度。像这样:

    <MenuItem>
        <MenuItem.Header>
            <DockPanel LastChildFill="False" Width="250">
                <TextBlock Text="Item 1" DockPanel.Dock="Left" HorizontalAlignment="Stretch" />
                <Button DockPanel.Dock="Right" Content="E" />
                <Button DockPanel.Dock="Right" Content="D" />
            </DockPanel>
        </MenuItem.Header>
    </MenuItem>

答案 1 :(得分:0)

我更像是一个码头类型的家伙。你怎么试试:

<MenuItem>
    <MenuItem.Header>
        <DockPanel LastChildFill="True">
            <Button DockPanel.Dock="Right" Content="E" />
            <Button DockPanel.Dock="Right" Content="D" />

            <TextBlock DockPanel.Dock="Left" Text="Item 1" />
        </DockPanel>
    </MenuItem.Header>
</MenuItem>