【问题标题】:WPF - Tooltip on a disabled hyperlink with an embedded TextBlock elementWPF - 带有嵌入 TextBlock 元素的禁用超链接上的工具提示
【发布时间】:2014-10-06 11:10:46
【问题描述】:

我正在尝试将工具提示放在我的 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 区域。

谢谢。

【问题讨论】:

  • +1 用于发现一个有趣的问题。我已经查看了它,不幸的是,我找不到适合您的解决方法。如果您在这里找不到解决方案,可能值得在Microsoft Connect 上注册这些详细信息。
  • 当控件未启用时,它不参与命中测试或焦点,因此不会成为任何输入事件的来源。要生成工具提示,控件需要是可命中测试的。

标签: c# wpf xaml hyperlink tooltip


【解决方案1】:

像这样将Tooltip移动到textblock

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

【讨论】:

  • 但这将使工具提示显示在整个 TextBlock 区域上,而不仅仅是在超链接的文本上。我提到我想避免这种情况。
【解决方案2】:

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

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

即,您必须禁用父 TextBlock。

【讨论】:

  • 这回答了我原来的问题。但是,如果 IsEnabled 属性是数据绑定的,这将不起作用。我发布了一个更具体的问题,并提供了详细的答案here。
  • 这适用于我的场景,其中控件嵌套在禁用的父控件中。
猜你喜欢
  • 2023-04-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-22
  • 1970-01-01
  • 1970-01-01
  • 2021-10-02
  • 1970-01-01
相关资源
最近更新 更多