Hyperlink 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
提供內嵌層級的內容專案,可提供裝載超連結的設備。
public ref class Hyperlink sealed : Span
/// [Windows.Foundation.Metadata.Activatable(65536, "Microsoft.UI.Xaml.WinUIContract")]
/// [Windows.Foundation.Metadata.ContractVersion(Microsoft.UI.Xaml.WinUIContract, 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.Activatable(65536, "Microsoft.UI.Xaml.WinUIContract")]
[Windows.Foundation.Metadata.ContractVersion(typeof(Microsoft.UI.Xaml.WinUIContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
public sealed class Hyperlink : Span
Public NotInheritable Class Hyperlink
Inherits Span
<Hyperlink .../>
- 繼承
- 屬性
範例
以下是 TextBlock中簡單 Hyperlink 元素的範例。
在 XAML 中,內容元素的建立是隱含的,因此您可以直接將連結文字新增至 Hyperlink,以及直接將 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 中,建立內容元素是隱含的,因此您可以直接將連結文字新增至 Hyperlink。
具有屬性的 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,以及直接將 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 元素會與其他文字元素一起流動,而且您可以在任何 InlineCollection中使用。
- 在應用程式中的任何位置使用 HyperlinkButton 控制項。 HyperlinkButton是特製化的Button控制項,您可以在任何使用Button的地方使用。 如需詳細資訊,請參閱 HyperlinkButton。
內嵌超連結
您可以使用 Hyperlink 元素,將互動式文字新增至 TextBlock 或 RichTextBlock的內容。 Hyperlink 衍生自 Inline 類別,因此您可以將它放在具有 InlineCollection 做為其 Inlines 屬性的任何容器內,例如 TextBlock、 Paragraph或 Span。
提示
當您在 Span 容器內搭配 XAML 中的其他文字元素使用 Hyperlink 時,請將 xml:space="preserve"
屬性套用至 Span ,以保留 Hyperlink 與其他元素之間的空白字元。
瀏覽至 URI
若要使用超連結流覽至統一資源識別項 (URI) ,請設定 NavigateUri 屬性。 當使用者按一下或點選 Hyperlink 元素時,指定的統一資源識別項 (URI) 會在預設瀏覽器中開啟。 預設瀏覽器會在與您應用程式不同的處理序中執行。
提示
您不一定要使用 http: 或 https: 配置。 如果適合在瀏覽器中載入這些位置的資源內容,您可以使用 ms-appx:ms-appdata: 或 ms-resources: 這類配置。 不過,會特別封鎖 file: 配置。 如需詳細資訊,請參閱 URI 配置。
當使用者按一下 Hyperlink 時, NavigateUri 屬性的值會傳遞至統一資源識別項的系統處理常式, (URI) 類型和配置。 系統接著會啟動針對 NavigateUri提供的統一資源識別項 (URI 配置註冊的應用程式) 。
如果您不想讓 Hyperlink 在預設網頁瀏覽器中載入內容 (,而且不想讓瀏覽器出現在) ,則請勿設定 NavigateUri的值。 請改為處理 Click 事件,並撰寫可執行您想要之動作的程式碼。
處理 Click 事件
針對在瀏覽器中啟動統一資源識別項 (URI) 以外的動作使用 Click 事件,例如在應用程式中流覽。 例如,如果您想要載入新的應用程式頁面,而不是開啟瀏覽器,請在Click事件處理常式內呼叫Frame.Navigate方法,以流覽至新的應用程式頁面。 如果您想要外部的絕對統一資源識別元 (URI) ,以在您的應用程式中載入也存在於應用程式的 WebView2 控制項中,請呼叫 WebView2.NavigateToString (System.String) 作為 Click 處理常式邏輯的一部分。
您通常不會處理 Click 事件以及指定 NavigateUri 值,因為這些值代表使用 Hyperlink 元素的兩種不同方式。 如果您的意圖是在預設瀏覽器中開啟 URI,而且您已指定 NavigateUri的值,請勿處理 Click 事件。 相反地,如果您處理 Click 事件,請勿指定 NavigateUri。
您無法在 Click事件處理常式內執行任何動作,以防止預設瀏覽器載入為 NavigateUri指定的任何有效目標;當超連結啟動且無法在Click事件處理常式內取消時,該動作會自動 (非同步) 。
超連結限制
因為 Hyperlink 不是 UIElement,所以它沒有一組 UI 元素輸入事件,例如 點選、 PointerPressed 等等。 相反地,Hyperlink 有自己的 Click 事件,加上系統載入任何統一資源識別項 (URI 的隱含行為,) 指定為 NavigateUri。 系統會處理應該叫用 Hyperlink 動作的所有輸入動作,並引發 Click 事件以回應。
Hyperlink 對可存在於其 Inlines 集合中的內容有所限制。 具體而言,Hyperlink 僅允許 Run 以及不是另一個 Hyperlink 的其他 Span 類型。 InlineUIContainer 不能位於 Hyperlink 的 Inlines 集合中。 嘗試新增限制內容,會擲回無效引數例外狀況或 XAML 剖析例外狀況。
Hyperlink 和佈景主題/樣式行為
Hyperlink 不是繼承自 Control,因此沒有 Style 屬性或 Template。 您可以編輯繼承自 TextElement的屬性,例如 Foreground 或 FontFamily,以變更超連結的外觀,但您無法使用一般樣式或範本來套用變更。 請考慮使用常見資源做為 Hyperlink 屬性的值以提供一致性,而不是使用範本。 Hyperlink 的某些屬性會使用系統所提供的 {ThemeResource} 標記延伸 值中的預設值。 使用者在執行階段變更系統佈景主題時,這會以適當的方式切換 Hyperlink 外觀。
超連結的預設色彩是系統的輔色。 您可以設定 Foreground 屬性來覆寫這個值。
根據預設,超連結會加上底線。 這個底線相當重要,因為它有助於符合協助工具需求。 色盲使用者使用底線來區別超連結與其他文字。 您可以設定 UnderlineStyle 屬性來停用底線。 如果停用底線,您應該考慮新增一些其他類型的格式差異,以區分超連結與其他文字,例如 FontWeight 或 FontStyle。
建構函式
Hyperlink() |
初始化 Hyperlink 類別的新實例。 |
屬性
AccessKey |
取得或設定這個專案的存取索引鍵。 (繼承來源 TextElement) |
AccessKeyScopeOwner |
取得或設定來源專案,這個元素會提供這個專案的存取索引鍵範圍,即使它不在來源專案的視覺化樹狀結構中也一樣。 (繼承來源 TextElement) |
AllowFocusOnInteraction |
取得或設定值,這個值表示當使用者與其互動時,專案是否會自動取得焦點。 (繼承來源 TextElement) |
CharacterSpacing |
取得或設定字元之間的統一間距,單位為 em 的 1/1000。 (繼承來源 TextElement) |
ContentEnd |
取得 TextPointer ,表示 專案中內容的結尾。 (繼承來源 TextElement) |
ContentStart |
取得 TextPointer ,表示 專案中內容的開頭。 (繼承來源 TextElement) |
Dispatcher |
一律會在 |
DispatcherQueue |
|
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 |
取得或設定值,這個值表示 KeyTip 相對於文字元素的位置。 (繼承來源 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: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 |
發生于 超連結 失去焦點時。 |
適用於
另請參閱
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應