Как получить простую гиперссылку для работы в XAML? - PullRequest
2 голосов
/ 26 декабря 2009

Когда я запускаю это и нажимаю на ссылку, я ожидаю, что откроется браузер и он перейдет в Google, но ничего не происходит:

<Window x:Class="TestHyperlink2343.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Window1" Height="300" Width="300">
    <Grid>
        <TextBlock>
            You and read this or 
            <Hyperlink NavigateUri="http://www.google.com">go to google</Hyperlink>
             etc.
        </TextBlock>
    </Grid>
</Window>

Итак, я заменяю приведенный выше код следующим, а все еще ничего не происходит. Однако, что удивительно, если я щелкну правой кнопкой мыши по ссылке, она перейдет в Google:

<Window x:Class="TestHyperlink2343.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Window1" Height="300" Width="300">
    <Grid>
        <TextBlock>
            You and read this or 
            <Hyperlink MouseDown="Hyperlink_MouseDown">go to google</Hyperlink>
             etc.
        </TextBlock>
    </Grid>
</Window>

private void Hyperlink_MouseDown(object sender, MouseButtonEventArgs e)
{
    System.Diagnostics.Process.Start("http://www.google.com");
}

Почему эти примеры не работают должным образом и как я могу заставить работать простую гиперссылку, поскольку пользователи привыкли к их работе в веб-браузерах (щелчок левой кнопкой мыши, открытие браузера, переход на сайт)?

Добавление

Я решил эту проблему, создав собственную гиперссылку без элемента гиперссылки следующим образом:

<TextBlock Text="More info at wikipedia" 
  TextDecorations="Underline" 
  MouseDown="TextBlock_MouseDown_Wikipedia"/>

private void TextBlock_MouseDown_Wikipedia(object sender, System.Windows.Input.MouseButtonEventArgs e)
{
    System.Diagnostics.Process.Start("http://www.wikipedia.com");
}

Странно, что гиперссылка не так легко работает.

Ответы [ 2 ]

4 голосов
/ 26 декабря 2009

MSDN состояния:

Гиперссылка навигация возможна, однако, если прямой или косвенный родительский элемент Гиперссылка является хостом навигации, включая NavigationWindow , Frame или любой браузер, в котором могут размещаться XBAP (включая Internet Explorer 7, Microsoft Internet Explorer 6 и Firefox 2.0+). Для получения дополнительной информации см. Раздел Хосты навигации в Обзор навигации .

Не видя больше вашего кода, я не знаю, применимо ли это в вашем случае или нет.

0 голосов
/ 04 декабря 2016

Вы были близки. Я считаю, что все, что вам нужно было сделать по-другому, это указать левой кнопкой мыши, в частности,

MouseLeftButtonDown

Здесь много полезной информации-

https://stackoverflow.com/a/10667643/3692082

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...