如何仅使tabitem的标题响应鼠标事件 [英] How to make only the header of the tabitem respond to the mouse event

查看:143
本文介绍了如何仅使tabitem的标题响应鼠标事件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述



到目前为止,我有我的xaml ...

 < TabControl> 
< TabItem Header =tab 1>
任何文本
< / TabItem>
< TabItem Header =tab 2>
< TextBox> blah< / TextBox>
< / TabItem>
< TabControl.Resources>
< Style TargetType =TabItem>
< EventSetter Event =MouseDoubleClickHandler =TabItemMouseDoubleClick/>
< / style>
< / TabControl>

...和我的事件处理程序...

  void TabItemMouseDoubleClick(object sender,MouseButtonEventArgs e)
{}

现在,当双击标签项目标题事件触发时,当点击标签项目内容区域时它不会触发(这是我想要的),但是当我在TabItem中放置一个文本框时,双击文本框会触发事件。我试图只获取TabItem的头部来触发事件 - 任何想法?解析方案

对于其他人来说,最后xaml获取tabItems头只发送事件是...

 < TabControl> 
< TabItem Header =tab 1>
任何文本
< / TabItem>
< TabItem Header =tab 2>
< TextBox> blah< / TextBox>
< / TabItem>
< TabControl.Resources>
< Style TargetType =TabItem>

< Setter Property =HeaderTemplate>
< Setter.Value>
< DataTemplate>
<标签内容={绑定}>
< Label.Style>
< Style TargetType =标签>
< EventSetter Event =MouseDoubleClickHandler =TabItemMouseDoubleClick/>
< / style>
< / Label>
< / DataTemplate>
< / Setter>
< / style>
< / TabControl>


I'm trying to make only the header of the TabItem send an event.

So far I have my xaml...

<TabControl>
    <TabItem Header="tab 1">
             Any text
    </TabItem>
    <TabItem Header="tab 2">
        <TextBox>blah</TextBox>
    </TabItem>
    <TabControl.Resources>
        <Style TargetType="TabItem">
            <EventSetter Event="MouseDoubleClick" Handler="TabItemMouseDoubleClick"/>
        </Style>
    </TabControl.Resources>
</TabControl>

...and my event handler...

void TabItemMouseDoubleClick(object sender, MouseButtonEventArgs e)
{}

Now, when double clicking the tab item header the event fires, when clicking the tab item content area it doesn't fire (which is what I want), but when I put a text box in the TabItem, the event fires upon double clicking the textbox. I'm trying to get only the header of the TabItem to fire the event - any ideas?

解决方案

For others, the final xaml to get the tabItems header only sending the event is...

    <TabControl>
        <TabItem Header="tab 1">
                 Any text
        </TabItem>
        <TabItem Header="tab 2">
            <TextBox>blah</TextBox>
        </TabItem>
        <TabControl.Resources>
            <Style TargetType="TabItem">

                <Setter Property="HeaderTemplate">
                    <Setter.Value>
                        <DataTemplate>
                            <Label Content="{Binding}">
                                <Label.Style>
                                    <Style TargetType="Label">
                                        <EventSetter Event="MouseDoubleClick" Handler="TabItemMouseDoubleClick"/>
                                    </Style>
                                </Label.Style>
                            </Label>
                        </DataTemplate>
                    </Setter.Value>
                </Setter>
            </Style>
        </TabControl.Resources>
    </TabControl>

这篇关于如何仅使tabitem的标题响应鼠标事件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆