【发布时间】:2018-03-17 12:35:02
【问题描述】:
我正在构建文本,一些文本应该包含超链接。但是,这些超链接不会重定向到网页,而是应该在 UWP 应用(当前运行的 UWP 应用,而不是它的新实例或其他应用)中打开一个页面。
HyperlinkButton 只能打开指向外部浏览器的 URL,无法打开应用内的页面。
使用InlineUIContainer 不起作用,我明白了
抛出异常:mscorlib.ni.dll 中的“System.ArgumentException” 附加信息:值不在预期范围内。
使用此代码
List<Inline> ic = new List<Inline>();
InlineUIContainer container = new InlineUIContainer();
TextBlock tbClickable = new TextBlock();
tbClickable.Foreground = new SolidColorBrush(Colors.Red);
tbClickable.Text = label?.name;
tbClickable.Tag = label?.id;
tbClickable.Tapped += TbArtist_Tapped;
container.Child = tbClickable;
ic.Add(container);
当我使用时
foreach (var item in ic)
{
dTb.Inlines.Add(item);
}
其中tbCurrent 是TextBlock。
还有其他方法可以将可点击链接作为内联元素吗?
最好的情况我可以附加一个Tapped/Click 事件处理程序。
但是通过URI方式打开页面也不错。
【问题讨论】:
-
HyperlinkButton的文档告诉你 how to do this -
@PeterTorr-MSFT 问题是 TextBlock 不接受 InlineUIContainer,因此我无法添加 HyperlinkButton,因为它需要在 InlineUIContainer 中。 HyperlinkButton 本身不是内联元素。
-
改用
Hyperlink。 docs.microsoft.com/en-us/uwp/api/… -
@PeterTorr-MSFT 这不起作用,因为它只接受将在应用程序外部打开的 URI。如文档中所述:“当用户单击或点击超链接元素时,指定的统一资源标识符 (URI) 在默认浏览器中打开。默认浏览器在与您的应用程序不同的进程中运行。”。但是,我设法让它在带有 HyperlinkButton 的 RichTextBlock 中工作。清理完代码后,我将发布答案。
-
您阅读下一段了吗? “将 Click 事件用于在浏览器中启动统一资源标识符 (URI) 以外的操作,例如在应用程序内导航。”
标签: c# xaml hyperlink uwp inline