Hyperlink 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
提供内联级别内容元素,该元素提供用于托管超链接的设施。
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 .../>
- 继承
- 属性
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 元素用于保留超链接周围的空白。
在代码中,必须显式创建每个文本元素 (例如 Run、 Paragraph 或 Italic) ,并将其添加到相应的 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);
注解
Hyperlink 和 HyperlinkButton
可通过两种方式将超链接添加到 XAML 应用。 Hyperlink 和 HyperlinkButton 具有类似的用途,即允许用户使用单独的浏览器应用启动特定 URI。+ 在文本控件内使用内联 Hyperlink 文本元素。 Hyperlink 元素与其他文本元素一起流动,你可以在任何 InlineCollection 中使用它。
- 在应用中的任意位置使用 HyperlinkButton 控件。 HyperlinkButton 是一种专用的 Button 控件,可在使用 Button 的任何位置使用。 有关详细信息,请参阅 HyperlinkButton。
内联超链接
使用 Hyperlink 元素可将交互式文本添加到 TextBlock 或 RichTextBlock 的内容。 超链接派生自 Inline 类,因此你可以将其放置在将 InlineCollection 作为其 Inlines 属性的任何容器中,例如 TextBlock、 Paragraph 或 Span。
导航到 URI
若要使用超链接导航到统一资源标识符 (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 元素输入事件,例如 Tappped、 PointerPressed 等。 相反,Hyperlink 具有自己的 Click 事件,以及系统加载任何统一资源标识符 (URI 的隐式行为) 指定为 NavigateUri。 系统处理应调用 Hyperlink 操作的所有输入操作,并在响应中引发 Click 事件。
超链接对可能存在于其 Inlines 集合中的内容具有限制。 具体来说,超链接仅允许 Run 和非另一个超链接的其他 Span 类型。 InlineUIContainer 不能位于 Hyperlink 的 Inlines 集合中。 尝试添加受限制的内容会引发无效参数异常或 XAML 分析异常。
超链接和主题/样式行为
超链接不从 Control 继承,因此它没有 Style 属性或 Template。 可以编辑从 TextElement 继承的属性(如 Foreground 或 FontFamily)以更改超链接的外观,但不能使用通用样式或模板来应用更改。 请考虑为超链接属性的值使用常见资源(而不是使用模板)以保持一致性。 Hyperlink 的某些属性使用系统提供的 {ThemeResource} 标记扩展 值中的默认值。 这使超链接外观可以在用户在运行时更改系统主题时以相应的方式进行切换。
超链接的默认颜色为系统的主题色。 你可以设置 Foreground 属性来覆盖此颜色。
默认情况下,超链接带有下划线。 此下划线很重要,因为它有助于满足辅助功能要求。 色盲用户使用下划线来区分超链接和其他文本。 你可以设置 UnderlineStyle 属性来禁用下划线。 如果禁用下划线,应考虑添加一些其他类型的格式差异,以区分超链接与其他文本,如 FontWeight 或 FontStyle。
版本历史记录
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 类的新实例。 |
属性
方法
ClearValue(DependencyProperty) |
清除依赖属性的本地值。 (继承自 DependencyObject) |
FindName(String) |
通过引用对象的 x:Name 或 Name 属性值,在对象模型/运行时对象图中检索对象。 (继承自 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 |
当 超链接 失去焦点时发生。 |