12

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?

4

5 に答える 5

2

以下のコードをテキストブロックに追加します

ToolTip=""、ToolTipSevice.ShowDuration="0"

于 2013-07-02T09:30:50.557 に答える
0

別の方法として、私が提供できるのは次のとおりStyleです。ToolTipWidthHeight

<Style x:Key="NullToolTip" TargetType="{x:Type ToolTip}">
    <Setter Property="Width" Value="0" />
    <Setter Property="Height" Value="0" />
    <Setter Property="Content" Value="{x:Null}" />
</Style>

これで作成ToolTipしてStyle配置するとResources

<ToolTip x:Key="NoToolTip" Style="{StaticResource NullToolTip}" />

そして、オフにしたいコントロールに割り当てますToolTip

<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" ToolTipService.ToolTip="{StaticResource NoToolTip}" />
    </StackPanel>
</TabItem>

注:ToolTip forを使用すると、同様の問題が発生しますTreeViewItem。彼の子供は親を継承しToolTipます。

于 2013-07-02T09:44:08.913 に答える