wpf: как добавить гиперссылку во время выполнения? - PullRequest
3 голосов
/ 22 сентября 2010

Мне нужно добавить несколько гиперссылок к форме программы динамически во время выполнения (и обрабатывать клики пользователей по ним).

Как это сделать?

Я пробовал что-то вроде: var hlink = new Hyperlink (); myStackPanel.Children.Add (hlink);

но гиперссылка не является элементом UIElement ...

Спасибо!

Ответы [ 2 ]

3 голосов
/ 22 сентября 2010

Это немного глупо, но вам нужно сделать это:

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);

Это создаст новую метку с текстом "Google", Uri "http://www.google.com", и при нажатиион откроет Uri в браузере пользователя по умолчанию.

2 голосов
/ 22 сентября 2010

Гиперссылка не является элементом пользовательского интерфейса, но вы можете добавить его в качестве содержимого в метку.

В Xaml это будет выглядеть так:

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

Вы можете использовать его для многих вещей так же, как и для события нажатия кнопки.

...