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?
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>
Add the below piece of code to the textblocks
ToolTip="", ToolTipSevice.ShowDuration="0"
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
};
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With