WPF - 带有嵌入式TextBlock元素的已禁用超链接上的工具提示

时间:2014-08-13 07:19:54

标签: c# wpf xaml hyperlink tooltip

我正在尝试在我的WPF应用中将工具提示放在已禁用的超链接上。超链接具有用于Text参数绑定的嵌入TextBlock元素。但是,由于某些原因,工具提示不适用于具有嵌入式TextBlock元素的禁用超链接。这是一个例子:

<Grid>
    <StackPanel>
        <TextBlock TextAlignment="Center" Margin="5">
            <Hyperlink IsEnabled="False" ToolTip="ToolTip" ToolTipService.ShowOnDisabled="True">Text</Hyperlink>
        </TextBlock>
        <TextBlock TextAlignment="Center" Margin="5">
            <Hyperlink IsEnabled="True" ToolTip="ToolTip" ToolTipService.ShowOnDisabled="True">
                <TextBlock Text="Text"/>
            </Hyperlink>
        </TextBlock>
        <TextBlock TextAlignment="Center" Margin="5">
            <Hyperlink IsEnabled="False" ToolTip="ToolTip" ToolTipService.ShowOnDisabled="True">
                <TextBlock Text="Text"/>
            </Hyperlink>
        </TextBlock>
    </StackPanel>
</Grid>

此XAML描述了三个超链接。

  • 第一个超链接已禁用,但没有嵌入的TextBlock元素。工具提示显示正常。
  • 第二个超链接具有嵌入的TextBlock元素,但已启用。同样,工具提示显示正常。
  • 第三个超链接已禁用且具有嵌入式TextBlock元素,这是我需要的,但工具提示未显示

如何在带有嵌入式TextBlock元素的已禁用超链接上显示工具提示?我不想将工具提示添加到父TextBlock,因为我希望工具提示只出现在超链接文本上,而不是整个TextBlock区域。

感谢。

2 个答案:

答案 0 :(得分:3)

我知道这听起来很奇怪,但这似乎有效:

<TextBlock Text="Hello there" IsEnabled="False">
    <Hyperlink ToolTip="ToolTip" ToolTipService.ShowOnDisabled="True">
        <TextBlock Text="Text" />
    </Hyperlink>
</TextBlock>

即,您必须禁用父TextBlock。

答案 1 :(得分:0)

Tooltip移至textblock,如此

<TextBlock TextAlignment="Center" Margin="5" ToolTip="ToolTip">
    <Hyperlink IsEnabled="False" ToolTipService.ShowOnDisabled="True">
        <TextBlock Text="Text"/>
    </Hyperlink>
</TextBlock>