Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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?

like image 213
axeloide Avatar asked Jul 02 '13 09:07

axeloide


3 Answers

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>
like image 128
Bolu Avatar answered Nov 08 '22 17:11

Bolu


Add the below piece of code to the textblocks

ToolTip="", ToolTipSevice.ShowDuration="0"

like image 44
Arushi Agrawal Avatar answered Nov 08 '22 16:11

Arushi Agrawal


This works for me when adding tabItems dynamically:

TabItem nt = new TabItem
string _newTabItemText = "xxxx" // Dynamic header text
string _newTabItemTooltip = "xxxx Tooltip" // Dynamic tooltip text
string _newTabItemName = "xxxx" // tabItem name to reference the tab item in code ie XAML x:name = "xxxx"
{
  Header = new TextBlock() { Text = _newTabItemText, ToolTip = _newTabItemTooltip },
  Name = _newTabItemName,
  Width = 108
};
like image 2
Henry Avatar answered Nov 08 '22 16:11

Henry