Sdílet prostřednictvím


Hyperlinks

Hypertextové odkazy přechádí uživatele do jiné části aplikace, do jiné aplikace nebo spustí konkrétní identifikátor URI (Uniform Resource Identifier) pomocí samostatné aplikace prohlížeče. Existují dva způsoby, jak přidat hypertextový odkaz do aplikace XAML: textový element Hyperlink a HyperlinkButton ovládacího prvku.

hypertextové tlačítko

Je to správná kontrola?

Hypertextový odkaz použijte v případě, že potřebujete text, který odpoví při stisknutí a přejde uživatele na další informace o textu, který byl stisknut.

Vyberte správný typ hypertextového odkazu podle vašich potřeb:

  • Použijte vložený Hypertextový odkaz textový prvek uvnitř textového ovládacího prvku. Prvek Hyperlink plyne s jinými textovými prvky a můžete jej použít v libovolné InlineCollection. Textový hypertextový odkaz použijte, pokud chcete automatické obtékání textu a nepotřebujete nutně velký cíl dosažení. Text hypertextového odkazu může být pro dotykové ovládání malý a obtížně cílový.
  • Pro samostatné hypertextové odkazy použijte hypertextový odkaz. HyperlinkButton je specializovaný ovládací prvek, který můžete použít kdekoli, kde byste použili tlačítko Button.
  • Vytvořte klikací obrázek pomocí hypertextového tlačítka, které má obrázek jako svůj obsah.

Recommendations

  • Pro navigaci používejte pouze hypertextové odkazy; nepoužívejte je pro jiné akce.
  • Pro textové hypertextové odkazy použijte styl základního textu z typografické škály. Přečtěte si informace o písmech a Windows typografickém gradientu.
  • Udržujte samostatné hypertextové odkazy dostatečně daleko od sebe, aby uživatel mohl rozlišovat mezi nimi a má snadný čas vybrat jednotlivé hypertextové odkazy.
  • Přidejte popisy k hypertextovým odkazům, které označují, kam se bude uživatel směrovat. Pokud se uživatel bude směrovat na externí web, zahrňte do vyskakovacího textu název domény nejvyšší úrovně a nastylizujte text sekundární barvou písma.

Tento příklad ukazuje, jak použít textový prvek s hypertextovým odkazem uvnitř TextBlock.

<StackPanel Width="200">
    <TextBlock Text="Privacy" Style="{StaticResource SubheaderTextBlockStyle}"/>
    <TextBlock TextWrapping="WrapWholeWords">
        <Span xml:space="preserve"><Run>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Read the </Run><Hyperlink NavigateUri="http://www.contoso.com">Contoso Privacy Statement</Hyperlink><Run> in your browser.</Run> Donec pharetra, enim sit amet mattis tincidunt, felis nisi semper lectus, vel porta diam nisi in augue.</Span>
    </TextBlock>
</StackPanel>

Hypertextový odkaz se zobrazí v řádku a plyne s okolním textem:

Příklad hypertextového odkazu jako textového prvku

Návod

Pokud použijete hypertextový odkaz v textovém ovládacím prvku s jinými textovými prvky v XAML, umístěte obsah do kontejneru Span a použijte xml:space="preserve" atribut span, aby se zachovalo prázdné znaky mezi hypertextovým odkazem a dalšími prvky.

Vytvořit Hyperlinkové Tlačítko

Aplikace WinUI 3 Gallery obsahuje interaktivní příklady většiny ovládacích prvků, vlastností a funkcionality WinUI 3. Získání aplikace z Microsoft Storu nebo získání zdrojového kódu na GitHubu

Tady je postup použití tlačítka Hypertextový odkaz, a to jak s textem, tak s obrázkem.

<StackPanel>
    <TextBlock Text="About" Style="{StaticResource TitleTextBlockStyle}"/>
    <HyperlinkButton NavigateUri="http://www.contoso.com">
        <Image Source="Assets/ContosoLogo.png"/>
    </HyperlinkButton>
    <TextBlock Text="Version: 1.0.0001" Style="{StaticResource CaptionTextBlockStyle}"/>
    <HyperlinkButton Content="Contoso.com" NavigateUri="http://www.contoso.com"/>
    <HyperlinkButton Content="Acknowledgments" NavigateUri="http://www.contoso.com"/>
    <HyperlinkButton Content="Help" NavigateUri="http://www.contoso.com"/>
</StackPanel>

Tlačítka hypertextových odkazů s textovým obsahem se zobrazí jako označený text. Obrázek loga Contoso je také odkaz, na který můžete kliknout:

Příklad hypertextového odkazu jako ovládacího prvku tlačítka

Tento příklad ukazuje, jak vytvořit tlačítko s hypertextovým odkazem v kódu.

HyperlinkButton helpLinkButton = new HyperlinkButton();
helpLinkButton.Content = "Help";
helpLinkButton.NavigateUri = new Uri("http://www.contoso.com");

Řídit navigaci

U obou typů hypertextových odkazů zpracováváte navigaci stejným způsobem; Můžete nastavit vlastnost NavigateUri nebo zpracovat událost Click .

Chcete-li použít hypertextový odkaz k přechodu na identifikátor URI, nastavte vlastnost NavigateUri. Když uživatel klikne nebo klepne na hypertextový odkaz, otevře se zadané URI ve výchozím prohlížeči. Výchozí prohlížeč běží v samostatném procesu od vaší aplikace.

Poznámka:

Identifikátor URI je reprezentován třídou Windows.Foundation.Uri. Při programování pomocí rozhraní .NET je tato třída skrytá a měli byste použít třídu System.Uri . Další informace najdete na referenčních stránkách pro tyto třídy.

Nemusíte používat schémata http: nebo https:. Schémata, jako je ms-appx:, ms-appdata:, nebo ms-resources:, můžete použít, pokud je v těchto umístěních obsah prostředků vhodný k načtení v prohlížeči. Soubor : schéma je však výslovně blokováno. Pro více informací viz schémata URI.

Když uživatel klikne na hypertextový odkaz, hodnota vlastnosti NavigateUri je předána systémovému obslužnému programu pro typy a schémata URI. Systém pak spustí aplikaci zaregistrovanou pro schéma URI zadaného pro NavigateUri.

Pokud nechcete, aby hypertextový odkaz načítá obsah ve výchozím webovém prohlížeči (a nechcete, aby se zobrazil prohlížeč), nenastavujte hodnotu pro NavigateUri. Místo toho zpracujte událost Kliknutí a napište kód, který dělá to, co chcete.

Zpracování události kliknutí

Událost Kliknutí použijte pro jiné akce než spuštění identifikátoru URI v prohlížeči, jako je navigace v aplikaci. Pokud například chcete místo otevření prohlížeče načíst novou stránku aplikace, zavolejte metodu Frame.Navigate v obslužné rutině události Click a přejděte na novou stránku aplikace. Pokud chcete externí, absolutní identifikátor URI načíst do ovládacího prvku WebView, který existuje také v aplikaci, volejte WebView.Navigate jako součást logiky obslužné rutiny Click.

Obvykle nezpracováváte událost Click ani zadáváte hodnotu NavigateUri, protože představují dva různé způsoby použití elementu hypertextového odkazu. Pokud je vaším záměrem otevřít URI ve výchozím prohlížeči a zadali jste hodnotu pro NavigateUri, nezpracovávejte událost Click. Pokud naopak zpracováváte událost Kliknutí, nezadávejte identifikátor NavigateUri.

V obslužné rutině události Click není nic, co byste mohli udělat, aby výchozí prohlížeč nenačítal jakýkoli platný cíl zadaný pro NavigateUri; tato akce se provede automaticky (asynchronně) při aktivaci hypertextového odkazu a nedá se zrušit z obslužné rutiny události Click.

Ve výchozím nastavení jsou hypertextové odkazy podtržené. Toto podtržení je důležité, protože pomáhá splňovat požadavky na přístupnost. Barvoslepí uživatelé používají podtržení k rozlišení mezi hypertextovými odkazy a jiným textem. Pokud podtržení zakážete, měli byste zvážit přidání jiného typu rozdílu formátování, abyste odlišili hypertextové odkazy od jiného textu, například FontWeight nebo FontStyle.

Vlastnost UnderlineStyle můžete nastavit tak, aby se podtržení zakázalo. Pokud ano, zvažte použití FontWeight nebo FontStyle k rozlišení textu odkazu.

Tlačítko hypertextového odkazu

Ve výchozím nastavení se HyperlinkButton zobrazí jako podtržený text, když nastavíte řetězec jako hodnotu pro vlastnost Content.

Text se nezobrazuje podtržené v následujících případech:

  • TextBlock nastavíte jako hodnotu vlastnosti Content a vlastnost Text nastavíte na TextBlock.
  • Znovu vytvoříte šablonu HyperlinkButton a změníte název části šablony ContentPresenter .

Pokud potřebujete tlačítko, které se zobrazí jako nepodtržený text, zvažte použití standardního ovládacího prvku Button a aplikaci vestavěného prostředku systému TextBlockButtonStyle na jeho vlastnost Styl.

Tato část se vztahuje pouze na prvek textu hypertextového odkazu, nikoli na ovládací prvek HyperlinkButton.

Vstupní události

Vzhledem k tomu, že hypertextový odkaz není UIElement, nemá sadu vstupních událostí prvků uživatelského rozhraní, jako jsou tapped, PointerPressed atd. Hypertextový odkaz má svou vlastní událost Click a automatické chování systému, které načítá jakýkoli URI specifikovaný jako NavigateUri. Systém zpracovává všechny vstupní akce, které by měly vyvolat akce hypertextového odkazu a vyvolat událost Kliknutí v reakci.

Content

Hypertextový odkaz má omezení obsahu, který může existovat v vložené kolekci. Konkrétně hypertextový odkaz povoluje pouze Spustit a jiné typy Span, které nejsou jiným hypertextovým odkazem. InlineUIContainer nemůže být v kolekci Inlines hypertextového odkazu. Při pokusu o přidání omezeného obsahu dojde k výjimce neplatného argumentu nebo k výjimce při analýze XAML.

Hypertextový odkaz nedědí z ovládacího prvku, takže nemá vlastnost stylu ani šablonu. Pokud chcete změnit vzhled hypertextového odkazu, můžete upravit vlastnosti, které jsou zděděné z TextElement, například z popředí nebo FontFamily, ale nemůžete použít běžný styl nebo šablonu pro použití změn. Místo použití šablony zvažte použití běžných prostředků pro hodnoty vlastností hypertextového odkazu za účelem zajištění konzistence. Některé vlastnosti hypertextového odkazu používají výchozí hodnoty z přípony {ThemeResource}, kterou poskytuje systém. To umožňuje, aby se vzhled hypertextového odkazu přepnul vhodným způsobem, když uživatel změní systémový motiv za běhu.

Výchozí nastavená barva hypertextového odkazu je barva zvýraznění systému. Můžete nastavit vlastnost popředí přepsat.

Univerzální platforma Windows a WinUI 2

Důležité

Informace a příklady v tomto článku jsou optimalizované pro aplikace, které používají Windows App SDK a WinUI 3, ale obecně platí pro aplikace pro UPW, které používají WinUI 2. Informace o konkrétních platformách a příklady najdete v referenčních informacích k rozhraní API pro UPW.

Tato část obsahuje informace potřebné pro použití ovládacího prvku v aplikacích UWP nebo WinUI 2.

Rozhraní API pro tento ovládací prvek existují v jmenném prostoru Windows.UI.Xaml.Controls.