Search code examples
wpfxamltooltiptabcontroltabitem

ToolTip on TabItem: Show on header, but not on content


Tooltips on a TabControl's TabItems are not only spawn on the TabItem's header, but also on any TabItem content which doesn't explicitly set its own ToolTip.

Here is an example, which reproduces the problem:

<Window x:Class="TestToolTipsOnTabControl.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow">
    <Grid>
        <TabControl>
            <TabItem Header="Tab1"
                     ToolTip="Tooltip of tab1">
                <StackPanel>
                    <TextBlock Text="Content of tab1 with its own tooltip" 
                               ToolTip="Tooltip on content of tab1"/>
                    <TextBlock Text="more content of tab1" />
                </StackPanel>
            </TabItem>
            <TabItem Header="Tab2"
                     ToolTipService.ToolTip="Tooltip of tab2">
                <StackPanel>
                    <TextBlock Text="Content of tab2 with its own tooltip"
                               ToolTipService.ToolTip="Tooltip on content of tab2"/>
                    <TextBlock Text="more content of tab2" />
                </StackPanel>
            </TabItem>
            <TabItem Header="Tab3">
                <StackPanel>
                    <TextBlock Text="Content of tab3" />
                    <TextBlock Text="more content of tab3" />
                </StackPanel>
            </TabItem>
        </TabControl>
    </Grid>
</Window>

Moving the mouse pointer over the "more content of tab1" text will display the ToolTip which I'd like to only show up on the TabItem header.

Is there any way to for the ToolTip to show up only on the TabItem header, but nowhere else?


Solution

  • Is there any way to for the ToolTip to show up only on the TabItem header, but nowhere else?

    You should only apply Tooltip to the Header not the whole TabItem so change it to:

               <TabItem>
                    <TabItem.Header>
                        <TextBlock Text="Tab1" 
                         ToolTip="Tooltip of tab1"/>
                    </TabItem.Header>
                    <StackPanel>
                        <TextBlock Text="Content of tab1 with its own tooltip" 
                                   ToolTip="Tooltip on content of tab1"/>
                        <TextBlock Text="more content of tab1" />
                    </StackPanel>
                </TabItem>