Der eine oder andere hat dies sicher schon bemerkt. Wenn man im XAML ein Hyperlink Element einsetzt und NavigateUri mit der entsprechenden Adresse definiert, könnte man annehmen, dass das ausreicht um den Link aufzurufen. Doch leider ist dem nicht so.

Man könnte aber sein eigenes Control schreiben, welches diese Funktionalität beinhaltet.

Dazu fügt man ein neues UserControl hinzu und benennt dieses „Link„. Dieses UserControl muss nun so abgeändert werden, dass dieses von Hyperlink ableitet. Im Xaml muss der Knoten UserControl in Hyperlink umbenannt und im code-behind muss das UserControl auch dahingehend abgeändert werden.

1
2
3
4
5
<Hyperlink x:Class="WPFSpielwiese.Link"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
 
</Hyperlink>

Nun registrieren wir uns am Event „RequestNavigate“ und implementieren einen einfachen Process.Start um die URL aus NavigateUri aufzurufen. Die Fehlerbehandlung lass ich an dieser Stelle mal weg.

1
2
3
4
5
6
7
8
9
10
11
12
13
public partial class Link : Hyperlink
{
    public Link()
    {
        InitializeComponent();
        this.RequestNavigate += new RequestNavigateEventHandler(Link_RequestNavigate);
    }
 
    void Link_RequestNavigate(object sender, RequestNavigateEventArgs e)
    {
        Process.Start(this.NavigateUri.ToString());
    }
}

Eingesetzt wird das ganze dann wie folgt:

1
2
3
4
5
xmlns:mp="clr-namespace:WPFSpielwiese"
..
<TextBlock>
    <mp:Link NavigateUri="http://www.biggle.de">Biggle's Blog</mp:Link>
</TextBlock>


Viel Spaß beim entwickeln : )

Eigenes Hyperlink Control – XAML