2011-06-10 118 views
4

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

我已经尝试添加上下文菜单tabitem.header但它也存在一些问题,其中,如果我有 [TabItem的1] [tabitem2] [tabitemtabitemtabitemta]

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

谢谢!

回答

6

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


对于那些有兴趣在如何通过XAML做到这一点(特别是在使用MVVM模式时):

上的TabControl的ItemContainerStyle设置一个ContextMenu。它将仅适用于实际标签部分(标题),而不适用于标签内容。您可以使用MenuItems上的绑定等来获取基于特定选项卡的各种行为,前提是您的选项卡使用ViewModel ..

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