如何向wpf tabitem添加一个上下文菜单,仅当我点击tabitem标题而不是内容时才显示? 我还需要在.cs中动态创建tabitems,因此在.xaml中静态地执行此操作将不起作用。
我已经尝试将上下文菜单添加到tabitem.header但是它有一些问题,如果我有 [tabitem 1] [tabitem2] [tabitemtabitemtabitemta]
拉伸谢谢!
答案 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>