如何获得一个简单的超链接在XAML中工作?

时间:2009-12-26 14:45:04

标签: c# xaml hyperlink

当我运行此链接并点击链接时,我希望浏览器能够打开并进入谷歌,但没有会发生:

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

为什么这些示例不能按预期工作?如何让用户习惯于在Web浏览器中工作(左键单击,打开浏览器,转到网站),我可以获得一个简单的超链接?

附录

我通过创建我自己的超链接而没有这样的超链接元素来解决这个问题:

<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 个答案:

答案 0 :(得分:4)

MSDN州:

  

超链接导航只能在超链接的直接或间接父级是导航主机时发生,包括NavigationWindow,{{3或者任何可以托管XBAP的浏览器(包括Internet Explorer 7,Microsoft Internet Explorer 6和Firefox 2.0+)。有关详细信息,请参阅Frame中的导航主机主题。

如果没有看到更多代码,我不知道这是否适用于您的情况。

答案 1 :(得分:0)

你很亲密。我相信你需要做的就是明确指定鼠标左键 -

的MouseLeftButtonDown

这有很多好消息 -

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