views:

40

answers:

2

Hi,

I need to add several hyperlinks to the program's form dynamically at runtime (and handle user clicks on them).

How to do this?

I tried something like: var hlink = new Hyperlink(); myStackPanel.Children.Add(hlink);

but hyperlink is not a UIElement...

Thanks!

+2  A: 

Hyperlink is not a UI Element but you can add it as content into a Label.

In Xaml it will look like this:

<Label>
<Hyperlink Click="btnRemoveAll_Click">Remove all</Hyperlink>
</Label>

You can use it for many things just as you would use the click-event of a button.

Holli
To follow up on Holli's answer, then, you would create the Hyperlink as you do above, add an event handler to it (hlink.Click += new RoutedEventHandler(hLink_Click);), create a new Label, set Label.Content = hlink;, and then myStackPanel.Children.Add(label);
Wonko the Sane
+1  A: 

It's a little bit kludgy, but you need to do this:

Label linkLabel = new Label();
Run linkText = new Run("Google");
Hyperlink link = new Hyperlink(linkText);

link.NavigateUri = new Uri("http://www.google.com");

link.RequestNavigate += new RequestNavigateEventHandler(delegate(object sender, RequestNavigateEventArgs e) {
    Process.Start(new ProcessStartInfo(e.Uri.AbsoluteUri));
    e.Handled = true; 
});

linkLabel.Content = link;

myStackPanel.Children.Add(linkLabel);

This will make a new label with the text "Google", the Uri "http://www.google.com", and when clicked it will open the Uri in the user's default browser.

md5sum