将描述性MenuItem添加到WPF ContextMenu

时间:2013-09-01 12:33:09

标签: wpf contextmenu menuitem

我正在尝试向WPF添加项目 - ContextMenu仅用于"描述"下面的项目,但我不知道如何在所有项目上添加一个简单的文本行,其中文本居中对齐,文本不像普通MenuItem那样可选。

我试过这样的事情:

<ContextMenu Grid.Row="0" StaysOpen="False">
    <TextBlock Text="Add New:" IsEnabled="False" HorizontalAlignment="Center"/>
    <MenuItem Header="one"/>
    <MenuItem Header="two (horizontal)"/>
    <MenuItem Header="two (vertical)"/>
    <MenuItem Header="three"/>
    <MenuItem Header="four"/>
    <MenuItem Header="six"/>
</ContextMenu>

但不幸的是,TextBlock既没有集中对齐,也没有不可选择。 问题是使用MenuItem并将IsEnabled - 属性设置为false,文本不再是正常的黑色,而且我也无法集中对齐它。

希望有人能在这里想到一个简单的解决方案,我根本找不到任何东西。

1 个答案:

答案 0 :(得分:2)

我建议您为menuitems创建SubMenu项目。通过这种方式,menuitems将对其下的所有子菜单进行分组。

我已经给出了使用menuitem和submenuitems纯粹使用mvvm创建上下文菜单的答案。在这里你可以参考它。

WPF Context Menu with dropdown list showing hyperlinks

对于你提到的案例。我试过这个:

     <ContextMenu StaysOpen="False">
                        <MenuItem Header="Add New:" IsEnabled="False" HorizontalAlignment="Center">
                            <MenuItem.Style>
                                <Style TargetType="{x:Type MenuItem}">
                                    <Style.Triggers>
                                        <Trigger Property="IsEnabled" Value="False">
                                            <Setter Property="Foreground" Value="Black"/>
                                        </Trigger>
                                    </Style.Triggers>
                                </Style>

                            </MenuItem.Style>
                        </MenuItem>
                        <MenuItem Header="one"/>
                        <MenuItem Header="two (horizontal)"/>
                        <MenuItem Header="two (vertical)"/>
                        <MenuItem Header="three"/>
                        <MenuItem Header="four"/>
                        <MenuItem Header="six"/>
                    </ContextMenu>

我得到了菜单 enter image description here

添加新:不可选,鼠标悬停也不突出显示。

希望它有所帮助。感谢