wpf tabitem 标题上下文菜单

发布于 2024-11-15 02:10:10 字数 261 浏览 0 评论 0原文

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

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

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

谢谢!

How do I add a context menu to wpf tabitem that only appears when I click on tabitem header and not the content?
I also need to create tabitems dynamically in .cs so doing this statically in .xaml won't work.

I've tried adding context menu to tabitem.header but it has some problems where if I have
[tabitem 1][tabitem2 ]
[tabitemtabitemtabitemta]

[tabitem2 ] is stretched to match the width of tabcontrol.
any help would be appreciated.

Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

终弃我 2024-11-22 02:10:10

请参阅此问题了解如何以编程方式执行此操作。诀窍是在您设置为标题内容的任何控件上设置上下文菜单。如果您只是使用标头来设置一个简单的字符串值,那么这是行不通的。至少您需要创建一个 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>

See this question for how to do it programmatically. The trick is to set the ContextMenu on whatever control you set as the header content. If you're just using the header to set a simple string value, that won't work. At minimum you'll need to create a TextBlock or ContentControl or something.


For those interested in how to do it via XAML (particularly when using MVVM pattern):

Set a ContextMenu on the TabControl's ItemContainerStyle. It will then only apply to actual tab part (the header) and not the tab content. You can use bindings and such on the MenuItems to get varied behavior based on the specific tab, provided your tab is using a 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>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文