Hyperlink 类

定义

提供内联级别内容元素,该元素提供用于托管超链接的设施。

public ref class Hyperlink sealed : Span
/// [Windows.Foundation.Metadata.Activatable(65536, Windows.Foundation.UniversalApiContract)]
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
class Hyperlink final : Span
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
/// [Windows.Foundation.Metadata.Activatable(65536, "Windows.Foundation.UniversalApiContract")]
class Hyperlink final : Span
[Windows.Foundation.Metadata.Activatable(65536, typeof(Windows.Foundation.UniversalApiContract))]
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
public sealed class Hyperlink : Span
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
[Windows.Foundation.Metadata.Activatable(65536, "Windows.Foundation.UniversalApiContract")]
public sealed class Hyperlink : Span
Public NotInheritable Class Hyperlink
Inherits Span
<Hyperlink .../>
继承
Object Platform::Object IInspectable DependencyObject TextElement Inline Span Hyperlink
属性

Windows 要求

设备系列
Windows 10 (在 10.0.10240.0 中引入)
API contract
Windows.Foundation.UniversalApiContract (在 v1.0 中引入)

示例

下面是 TextBlock 中简单 Hyperlink 元素的示例。

在 XAML 中,内容元素的创建是隐式的,因此你可以将链接文本直接添加到 Hyperlink,并将超链接直接添加到 TextBlock 元素。

在代码中,必须显式创建每个 Run 元素,设置其 Text 属性,并将其添加到相应的 Inlines 集合 (Hyperlink 或 TextBlock) 。

<TextBlock><Hyperlink NavigateUri="http://www.bing.com">Go to Bing</Hyperlink></TextBlock>
// Create a TextBlock. The hyperlink is the TextBlock content. 
TextBlock tb = new TextBlock();

// Create a Hyperlink and a Run. 
// The Run provides the visible content of the hyperlink. 
Hyperlink hyperlink = new Hyperlink();
Run run = new Run();

// Set the Text property on the Run. This will be the visible text of the hyperlink.
run.Text = "Go to Bing";
// Set the URI for the Hyperlink. 
hyperlink.NavigateUri = new Uri("http://www.bing.com");

// Add the Run to Hyperlink.Inlines collection.
hyperlink.Inlines.Add(run);
// Add the text elements to the TextBlock.Inlines collection.
tb.Inlines.Add(hyperlink);
// Add the TextBlock to a StackPanel (defined in the XAML page).        
stackPanel.Children.Add(tb);

此示例演示 TextBlock 中的 Hyperlink 元素以及其他文本。

在 XAML 中,内容元素的创建是隐式的,因此可以直接将链接文本添加到超链接。 具有 属性的 xml:space="preserve"Span 元素用于保留超链接周围的空白。

在代码中,必须显式创建每个 Run 元素,设置其 Text 属性,并将其添加到相应的 Inlines 集合 (Hyperlink 或 TextBlock) 。

<TextBlock>
    <Span xml:space="preserve"><Run>Open </Run><Hyperlink NavigateUri="http://www.bing.com">Bing</Hyperlink><Run> in your browser.</Run></Span>
</TextBlock>
// Create a TextBlock. The hyperlink is part of the TextBlock content. 
// Set TextWrapping so that the text and the hyperlink wrap if the content is too wide.
TextBlock tb = new TextBlock();
tb.TextWrapping = TextWrapping.Wrap;

// Create a Hyperlink and a Run. 
// The Run provides the visible content of the hyperlink. 
Hyperlink hyperlink = new Hyperlink();
Run run = new Run();
// Set the Text property on the Run. This will be the visible text of the hyperlink.
run.Text = "Bing";
// Set the URI for the Hyperlink. 
hyperlink.NavigateUri = new Uri("http://www.bing.com");
//Add the Run to Hyperlink.Inlines collection.
hyperlink.Inlines.Add(run);

// Create Run elements for the text around the hyperlink.
Run run1 = new Run();
Run run2 = new Run();            
//Set the Text property on the Run elements.
run1.Text = "Open ";
run2.Text = " in your browser.";

// Add the text elements to the TextBlock.Inlines collection.
tb.Inlines.Add(run1);
tb.Inlines.Add(hyperlink);
tb.Inlines.Add(run2);

// Add the TextBlock to a StackPanel (defined in the XAML page).        
stackPanel.Children.Add(tb);

下面是 TextBlock 中简单 Hyperlink 元素的示例。

在 XAML 中,内容元素的创建是隐式的,因此你可以将链接文本直接添加到 Hyperlink,并将超链接直接添加到 TextBlock 元素。 具有 属性的 xml:space="preserve"Span 元素用于保留超链接周围的空白。

在代码中,必须显式创建每个文本元素 (例如 RunParagraphItalic) ,并将其添加到相应的 Inlines 集合。

<RichTextBlock>
    <Paragraph>
        <Span xml:space="preserve">
            <Run>This shows a hyperlink in a paragraph of text. You can click it to open </Run><Hyperlink NavigateUri="http://www.bing.com" UnderlineStyle="None" FontWeight="SemiBold"><Italic>Bing</Italic></Hyperlink><Run> in your browser.</Run>
        </Span>
    </Paragraph>
</RichTextBlock>
// Create a RichTextBlock. The hyperlink is part of the content. 
// Set TextWrapping so that the text and the hyperlink wrap if the content is too wide.
RichTextBlock rtb = new RichTextBlock();
rtb.TextWrapping = TextWrapping.Wrap;

// Create a Hyperlink and a Run. 
// The Run provides the visible content of the hyperlink. 
Hyperlink hyperlink = new Hyperlink();
Run run = new Run();
// Set the Text property on the Run. This will be the visible text of the hyperlink.
run.Text = "Bing";
// Set the URI  and other properties for the Hyperlink. 
hyperlink.NavigateUri = new Uri("http://www.bing.com");
hyperlink.UnderlineStyle = UnderlineStyle.None;
hyperlink.FontWeight = Windows.UI.Text.FontWeights.SemiBold;
//Add the Run to Hyperlink.Inlines collection.
hyperlink.Inlines.Add(run);


// Create an Italic element for the hyperlink.            
Italic italic = new Italic();
italic.Inlines.Add(hyperlink);

// Create Run elements for the text around the hyperlinks.
// Set the Text property on the Run elements.
Run run1 = new Run();
Run run2 = new Run();
run1.Text = "This shows a hyperlink in a paragraph of text. You can click it to open ";
run2.Text = " in your browser.";

// Create a Paragraph to hold the RichTextBlock content.
Paragraph paragraph = new Paragraph();

// Add the text elements to the Paragraph.Inlines collection.
paragraph.Inlines.Add(run1);
paragraph.Inlines.Add(italic);
paragraph.Inlines.Add(run2);
//Add the paragraph to the RichTextBlock.
rtb.Blocks.Add(paragraph);
// Add the RichTextBlock to a StackPanel (defined in the XAML page).        
stackPanel.Children.Add(rtb);

注解

可通过两种方式将超链接添加到 XAML 应用。 Hyperlink 和 HyperlinkButton 具有类似的用途,即允许用户使用单独的浏览器应用启动特定 URI。+ 在文本控件内使用内联 Hyperlink 文本元素。 Hyperlink 元素与其他文本元素一起流动,你可以在任何 InlineCollection 中使用它。

使用 Hyperlink 元素可将交互式文本添加到 TextBlockRichTextBlock 的内容。 超链接派生自 Inline 类,因此你可以将其放置在将 InlineCollection 作为其 Inlines 属性的任何容器中,例如 TextBlockParagraphSpan

提示

Span 容器中的超链接与 XAML 中的其他文本元素一起使用时,将 属性应用于 xml:space="preserve"Span 以保留 Hyperlink 与其他元素之间的空白。

若要使用超链接导航到统一资源标识符 (URI) ,请设置 NavigateUri 属性。 当用户单击或点击 Hyperlink 元素时,指定的统一资源标识符 (URI) 将在默认浏览器中打开。 默认浏览器将在独立于应用的进程中运行。

提示

无需使用 http: 或 https: 方案。 你可以使用 ms-appx:、ms-appdata: 或 ms-resources: 等方案,前提是这些位置中存在适合在浏览器中加载的资源内容。 但是,明确禁止 file: 方案。 有关详细信息,请参阅 URI 方案

当用户单击 Hyperlink 时, NavigateUri 属性的值将传递给统一资源标识符的系统处理程序 (URI) 类型和方案。 然后,系统启动为为 NavigateUri 提供的统一资源标识符 (URI) 方案注册的应用。

如果不希望超链接在默认 Web 浏览器中加载内容 (并且不希望浏览器显示在) ,则不要设置 NavigateUri 的值。 请改为处理 Click 事件,并编写执行所需操作的代码。

处理 Click 事件

Click 事件用于在浏览器中) 启动统一资源标识符 (URI 以外的操作,例如在应用中导航。 例如,如果要加载新的应用页面而不是打开浏览器,请在 Click 事件处理程序中调用 Frame.Navigate 方法以导航到新的应用页面。 如果希望外部的绝对统一资源标识符 (URI) 加载到应用中也存在的 WebView 控件中,请在 Click 处理程序逻辑中调用 WebView.Navigate

通常不会处理 Click 事件以及指定 NavigateUri 值,因为这些值表示使用 Hyperlink 元素的两种不同方式。 如果打算在默认浏览器中打开 URI,并且已为 NavigateUri 指定值,请不要处理 Click 事件。 相反,如果处理 Click 事件,请不要指定 NavigateUri

Click 事件处理程序中,你无法执行任何操作来阻止默认浏览器加载为 NavigateUri 指定的任何有效目标;激活超链接时,该操作会自动 (异步) 发生,并且无法从 Click 事件处理程序中取消。

由于 Hyperlink 不是 UIElement,因此它没有一组 UI 元素输入事件,例如 TapppedPointerPressed 等。 相反,Hyperlink 具有自己的 Click 事件,以及系统加载任何统一资源标识符 (URI 的隐式行为) 指定为 NavigateUri。 系统处理应调用 Hyperlink 操作的所有输入操作,并在响应中引发 Click 事件。

超链接对可能存在于其 Inlines 集合中的内容具有限制。 具体来说,超链接仅允许 Run 和非另一个超链接的其他 Span 类型。 InlineUIContainer 不能位于 Hyperlink 的 Inlines 集合中。 尝试添加受限制的内容会引发无效参数异常或 XAML 分析异常。

超链接不从 Control 继承,因此它没有 Style 属性或 Template。 可以编辑从 TextElement 继承的属性(如 ForegroundFontFamily)以更改超链接的外观,但不能使用通用样式或模板来应用更改。 请考虑为超链接属性的值使用常见资源(而不是使用模板)以保持一致性。 Hyperlink 的某些属性使用系统提供的 {ThemeResource} 标记扩展 值中的默认值。 这使超链接外观可以在用户在运行时更改系统主题时以相应的方式进行切换。

超链接的默认颜色为系统的主题色。 你可以设置 Foreground 属性来覆盖此颜色。

默认情况下,超链接带有下划线。 此下划线很重要,因为它有助于满足辅助功能要求。 色盲用户使用下划线来区分超链接和其他文本。 你可以设置 UnderlineStyle 属性来禁用下划线。 如果禁用下划线,应考虑添加一些其他类型的格式差异,以区分超链接与其他文本,如 FontWeightFontStyle

版本历史记录

Windows 版本 SDK 版本 增值
1607 14393 ElementSoundMode
1607 14393 XYFocusDown
1607 14393 XYFocusLeft
1607 14393 XYFocusRight
1607 14393 XYFocusUp
1703 15063 焦点
1703 15063 FocusState
1703 15063 GotFocus
1703 15063 LostFocus
1703 15063 XYFocusDownNavigationStrategy
1703 15063 XYFocusLeftNavigationStrategy
1703 15063 XYFocusRightNavigationStrategy
1703 15063 XYFocusUpNavigationStrategy
1709 16299 IsTabStop
1709 16299 TabIndex

构造函数

Hyperlink()

初始化 Hyperlink 类的新实例。

属性

AccessKey

获取或设置此元素的访问键。

(继承自 TextElement)
AccessKeyScopeOwner

获取或设置一个源元素,该元素提供此元素的访问键范围,即使它不在源元素的可视化树中也是如此。

(继承自 TextElement)
AllowFocusOnInteraction

获取或设置一个值,该值指示当用户与元素交互时是否自动获取焦点。

(继承自 TextElement)
CharacterSpacing

获取或设置字符之间的统一间距,单位为 1/1000 em。

(继承自 TextElement)
ContentEnd

获取一个 TextPointer ,它表示 元素中内容的末尾。

(继承自 TextElement)
ContentStart

获取一个 TextPointer ,它表示 元素中内容的开头。

(继承自 TextElement)
Dispatcher

获取与此对象关联的 CoreDispatcherCoreDispatcher 表示可以访问 UI 线程上的 DependencyObject 的工具,即使代码是由非 UI 线程启动的。

(继承自 DependencyObject)
ElementEnd

获取一个 TextPointer ,它表示元素末尾之后的位置。

(继承自 TextElement)
ElementSoundMode

获取或设置一个值,该值指定控件是否播放声音的首选项。

ElementSoundModeProperty

标识 ElementSoundMode 依赖属性。

ElementStart

获取一个 TextPointer ,它表示元素开始之前的位置。

(继承自 TextElement)
ExitDisplayModeOnAccessKeyInvoked

获取或设置一个值,该值指定在调用访问密钥时是否消除访问密钥显示。

(继承自 TextElement)
FocusState

获取一个值,该值指定此超链接是否具有焦点,以及获取焦点的模式。

FocusStateProperty

标识 FocusState 依赖属性。

FontFamily

获取或设置元素内容的首选顶级字体系列。

(继承自 TextElement)
FontSize

获取或设置元素内容的字体大小。

(继承自 TextElement)
FontStretch

获取或设置系列中要选择的字体的字形宽度。

(继承自 TextElement)
FontStyle

获取或设置此元素中内容的字体样式。

(继承自 TextElement)
FontWeight

获取或设置要从此元素中内容的字体系列中选择的顶级字体粗细。

(继承自 TextElement)
Foreground

获取或设置要应用于此元素中内容的 Brush

(继承自 TextElement)
Inlines

获取一个 InlineCollection ,其中包含包含 Span 内容的顶级内联元素。

(继承自 Span)
IsAccessKeyScope

获取或设置一个值,该值指示元素是否定义其自己的访问键范围。

(继承自 TextElement)
IsTabStop

获取或设置一个值,该值指示超链接是否包含在选项卡导航中。

IsTabStopProperty

标识 IsTabStop 依赖属性。

IsTextScaleFactorEnabled

获取或设置是否启用自动文本放大,以反映系统文本大小设置。

(继承自 TextElement)
KeyTipHorizontalOffset

获取或设置一个值,该值指示键提示相对于文本元素的左或右放置位置。

(继承自 TextElement)
KeyTipPlacementMode

获取或设置一个值,该值指示键提示相对于文本元素放置的位置。

(继承自 TextElement)
KeyTipVerticalOffset

获取或设置一个值,该值指示键提示相对于文本元素的向上或向下放置距离。

(继承自 TextElement)
Language

获取或设置应用于 TextElement 的本地化/全球化语言信息。

(继承自 TextElement)
Name

获取或设置 对象的唯一标识。 只能从 XAML 的初始分析中设置名称。

(继承自 TextElement)
NavigateUri

获取或设置激活 超链接 时要导航到的统一资源标识符 (URI) 。

NavigateUriProperty

标识 NavigateUri 依赖属性。

TabIndex

获取或设置一个值,该值确定当用户通过按 Tab 键浏览控件时元素接收焦点的顺序。

TabIndexProperty

标识 TabIndex 依赖属性。

TextDecorations

获取或设置一个值,该值指示应用于文本的修饰。

(继承自 TextElement)
UnderlineStyle

获取或设置一个值,该值指示超链接下显示的下划线类型。

UnderlineStyleProperty

标识 UnderlineStyle 依赖属性。

XamlRoot

获取或设置在其中查看此元素的 XamlRoot。

(继承自 TextElement)
XYFocusDown

获取或设置当用户按下方向盘 (DPAD) 时获得焦点的对象。

XYFocusDownNavigationStrategy

获取或设置一个值,该值指定用于确定向下导航的目标元素的策略。

XYFocusDownNavigationStrategyProperty

标识 XYFocusDownNavigationStrategy 依赖属性。

XYFocusDownProperty

标识 XYFocusDown 依赖属性。

XYFocusLeft

获取或设置当用户向左按方向键 (DPAD) 时获取焦点的对象。

XYFocusLeftNavigationStrategy

获取或设置一个值,该值指定用于确定左侧导航的目标元素的策略。

XYFocusLeftNavigationStrategyProperty

标识 XYFocusLeftNavigationStrategy 依赖属性。

XYFocusLeftProperty

标识 XYFocusLeft 依赖属性。

XYFocusRight

获取或设置当用户向右按方向键 (DPAD 时获取焦点的对象) 。

XYFocusRightNavigationStrategy

获取或设置一个值,该值指定用于确定右导航目标元素的策略。

XYFocusRightNavigationStrategyProperty

标识 XYFocusRightNavigationStrategy 依赖属性。

XYFocusRightProperty

标识 XYFocusRight 依赖属性。

XYFocusUp

获取或设置当用户按下方向盘 (DPAD) 时获取焦点的对象。

XYFocusUpNavigationStrategy

获取或设置一个值,该值指定用于确定向上导航目标元素的策略。

XYFocusUpNavigationStrategyProperty

标识 XYFocusUpNavigationStrategy 依赖属性。

XYFocusUpProperty

标识 XYFocusUp 依赖属性。

方法

ClearValue(DependencyProperty)

清除依赖属性的本地值。

(继承自 DependencyObject)
FindName(String)

通过引用对象的 x:NameName 属性值,在对象模型/运行时对象图中检索对象。

(继承自 TextElement)
Focus(FocusState)

尝试在超链接上设置焦点。

GetAnimationBaseValue(DependencyProperty)

返回为依赖属性建立的任何基值,该基值适用于动画未处于活动状态的情况。

(继承自 DependencyObject)
GetValue(DependencyProperty)

DependencyObject 返回依赖属性的当前有效值。

(继承自 DependencyObject)
OnDisconnectVisualChildren()

重写此方法以实现从特定于类的内容或子属性中删除项时布局和逻辑的行为方式。

(继承自 TextElement)
ReadLocalValue(DependencyProperty)

如果设置了本地值,则返回依赖属性的本地值。

(继承自 DependencyObject)
RegisterPropertyChangedCallback(DependencyProperty, DependencyPropertyChangedCallback)

注册通知函数,用于侦听此 DependencyObject 实例上对特定 DependencyProperty 的更改。

(继承自 DependencyObject)
SetValue(DependencyProperty, Object)

设置 DependencyObject 上依赖属性的本地值。

(继承自 DependencyObject)
UnregisterPropertyChangedCallback(DependencyProperty, Int64)

取消以前通过调用 RegisterPropertyChangedCallback 注册的更改通知。

(继承自 DependencyObject)

事件

AccessKeyDisplayDismissed

当访问键序列完成时发生,以通知控件应隐藏访问键视觉对象。

(继承自 TextElement)
AccessKeyDisplayRequested

当访问键序列启动以通知控件它们应显示访问键视觉对象时发生。

(继承自 TextElement)
AccessKeyInvoked

当用户完成访问键序列以通知元素应调用访问键操作时发生。

(继承自 TextElement)
Click

单击 超链接 时发生。

GotFocus

超链接 收到焦点时发生。

LostFocus

超链接 失去焦点时发生。

适用于

另请参阅