wpf tabitem标题上下文菜单

use*_*144 4 tabcontrol

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

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

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

谢谢!

Sea*_*ley 7

有关如何以编程方式执行此操作,请参阅此问题.诀窍是将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>
Run Code Online (Sandbox Code Playgroud)