如何将工具提示添加到“内联”超链接

时间:2017-01-13 09:58:53

标签: c# xaml uwp

我的UWP应用程序中有一个TextBlock控件,里面有几个文本和超链接。我向用户显示时缩短了超链接的URL,但我想添加一个工具提示,当用户将鼠标悬停在超链接上时显示完整的URL。

我知道如何向控件添加工具提示,但在这种情况下,Hyperlink对象不是控件(Windows.UI.Xaml.Documents.Hyperlink)。虽然下面的代码没有给出任何错误,但它也不起作用,它没有显示工具提示:

var textBlock = new TextBlock();
var link = new Hyperlink();
var run = new Run();
run.Text = "http://www.twitter.com/.../";

ToolTip toolTip = new ToolTip();
toolTip.Content = "http://www.twitter.com/blablabla/longurl/";
ToolTipService.SetToolTip(link, toolTip);

link.Inlines.Add(run);
textBlock.Inlines.Add(link);

有没有办法在TextBlock中为Inline对象添加工具提示?

2 个答案:

答案 0 :(得分:1)

如您所知,Hyperlink对象不是控件,似乎ToolTipService.ToolTip附加属性对它没有影响。作为解决方法,我建议您使用RichTextBlock代替TextBlock。这是因为for (int i=0; i <[coordinatesArray count]; i++) { float latitude = [coordinatesArray[i][@"latitude"] floatValue]; float longitude = [coordinatesArray[i][@"longitude"] floatValue]; MKPolygon *polygon; CLLocationCoordinate2D coordinates[[coordinatesArray count]]; coordinates[i] = CLLocationCoordinate2DMake(latitude , longitude); polygon = [MKPolygon polygonWithCoordinates:coordinates count:[coordinatesArray count]]; [self.mapView addOverlay:polygon]; } 同时支持InlineUIContainerRichTextBlock不支持。可以将HyperlinkButton添加到TextBlock,因为InlineUIContainer会对ToolTipService.ToolTip产生影响,因此我们可以使用HyperlinkButtonRichTextBlock如下进行会面你的要求:

HyperlinkButton

答案 1 :(得分:0)

您可以使用HyperlinkBut​​ton执行此操作:

<HyperlinkButton NavigateUri="http://www.mrlacey.com/" >
    <TextBlock Text="mrlacey.com">
        <ToolTipService.ToolTip>
            <TextBlock Text="http://mrlacey.com/" />
        </ToolTipService.ToolTip>
    </TextBlock>
</HyperlinkButton>