wpf tabitem标题上下文菜单

时间:2011-06-10 23:38:58

标签: tabcontrol

如何向wpf tabitem添加一个上下文菜单,仅当我点击tabitem标题而不是内容时才显示? 我还需要在.cs中动态创建tabitems,因此在.xaml中静态地执行此操作将不起作用。

我已经尝试将上下文菜单添加到tabitem.header但是它有一些问题,如果我有 [tabitem 1] [tabitem2] [tabitemtabitemtabitemta]

拉伸 [tabitem2]以匹配tabcontrol的宽度。 任何帮助将不胜感激。

谢谢!

1 个答案:

答案 0 :(得分:7)

有关如何以编程方式执行此操作,请参阅this question。诀窍是将ContextMenu设置为您设置为标题内容的任何控件。如果您只是使用标头来设置一个简单的字符串值,那将无法正常工作。至少你需要创建一个TextBlock或ContentControl或其他东西。


对于那些对如何通过XAML感兴趣的人(特别是在使用MVVM模式时):

在TabControl的ItemContainerStyle上设置ContextMenu。然后它只适用于实际的标签部分(标题)而不是标签内容。如果您的选项卡使用的是ViewModel,您可以在MenuItems上使用绑定等基于特定选项卡获取不同的行为。

<TabControl>
    <TabControl.ItemContainerStyle>
        <Style TargetType="{x:Type TabItem}">
            <Setter Property="ContextMenu">
                <Setter.Value>
                    <ContextMenu/> <!-- Define it here! -->
                </Setter.Value>
            </Setter>
        </Style>
    </TabControl.ItemContainerStyle>
</TabControl>