Wpf 弹出控件上的超链接找不到超链接文件

Wpf 弹出控件上的超链接找不到超链接文件,wpf,wpf-controls,Wpf,Wpf Controls,出于某种原因,以下弹出窗口控件上的超链接未打开google网站。弹出窗口正确显示链接,但当我点击链接时,我得到以下错误。使用的链接(https://www.google.com/)如果直接在浏览器上使用,效果很好。我在这里可能缺少什么,我们能让它工作吗 错误: ..... <Grid> <TextBlock TextWrapping="Wrap">text <Run TextDecorations="Underline

出于某种原因,以下
弹出窗口
控件上的
超链接
未打开google网站。弹出窗口正确显示链接,但当我点击链接时,我得到以下错误。使用的链接(
https://www.google.com/
)如果直接在浏览器上使用,效果很好。我在这里可能缺少什么,我们能让它工作吗

错误

.....
 <Grid>
        <TextBlock TextWrapping="Wrap">text <Run TextDecorations="Underline" MouseEnter="run_MouseEnter">link</Run>
        </TextBlock>
        <Popup Name="popLink" StaysOpen="False" Placement="Mouse" MaxWidth="200" PopupAnimation="Slide" AllowsTransparency = "True">
            <Border BorderBrush="Beige" BorderThickness="2" Background="White">
                <TextBlock Margin="10" TextWrapping="Wrap"> <Hyperlink Click="Hyperlink_Click" NavigateUri="https://www.google.com/">More info</Hyperlink>
                </TextBlock>
        </Border>
    </Popup>
</Grid>
private void run_MouseEnter(object sender, MouseEventArgs e)
{
    popLink.IsOpen = true;
}

private void Hyperlink_Click(object sender, RoutedEventArgs e)
{
    System.Diagnostics.Process.Start(((Hyperlink)sender).NavigateUri.ToString());
}

主窗口.xaml

.....
 <Grid>
        <TextBlock TextWrapping="Wrap">text <Run TextDecorations="Underline" MouseEnter="run_MouseEnter">link</Run>
        </TextBlock>
        <Popup Name="popLink" StaysOpen="False" Placement="Mouse" MaxWidth="200" PopupAnimation="Slide" AllowsTransparency = "True">
            <Border BorderBrush="Beige" BorderThickness="2" Background="White">
                <TextBlock Margin="10" TextWrapping="Wrap"> <Hyperlink Click="Hyperlink_Click" NavigateUri="https://www.google.com/">More info</Hyperlink>
                </TextBlock>
        </Border>
    </Popup>
</Grid>
private void run_MouseEnter(object sender, MouseEventArgs e)
{
    popLink.IsOpen = true;
}

private void Hyperlink_Click(object sender, RoutedEventArgs e)
{
    System.Diagnostics.Process.Start(((Hyperlink)sender).NavigateUri.ToString());
}
更新

.....
 <Grid>
        <TextBlock TextWrapping="Wrap">text <Run TextDecorations="Underline" MouseEnter="run_MouseEnter">link</Run>
        </TextBlock>
        <Popup Name="popLink" StaysOpen="False" Placement="Mouse" MaxWidth="200" PopupAnimation="Slide" AllowsTransparency = "True">
            <Border BorderBrush="Beige" BorderThickness="2" Background="White">
                <TextBlock Margin="10" TextWrapping="Wrap"> <Hyperlink Click="Hyperlink_Click" NavigateUri="https://www.google.com/">More info</Hyperlink>
                </TextBlock>
        </Border>
    </Popup>
</Grid>
private void run_MouseEnter(object sender, MouseEventArgs e)
{
    popLink.IsOpen = true;
}

private void Hyperlink_Click(object sender, RoutedEventArgs e)
{
    System.Diagnostics.Process.Start(((Hyperlink)sender).NavigateUri.ToString());
}
有关错误的更多详细信息:


事实证明,这个问题实际上与应用程序无法找到默认浏览器的位置有关(在我的例子中是
Chrome
)。我通过以下帖子找到了问题的原因:

俗话说:
有功劳就有功劳
。因此,该信用证归以下用户所有:

  • Felipe Oriani
    在他的帖子上:如果你的应用程序无法找到你的浏览器路径,该怎么办
  • Ahmad Hindash
    关于如何查找浏览器位置的帖子
  • Dxiv
    关于为什么有时会出现上述错误
  • 根据我对上述帖子的阅读,我能够解决以下问题:

    private void Hyperlink_Click(object sender, RoutedEventArgs e)
    {
       //PLEASE NOTE: You would want to programmatically find the location of you browser as user `Felipe Oriani` did in his above mentioned post. For brevity, I am leaving that part.
       System.Diagnostics.Process.Start(@"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe", ((Hyperlink)sender).NavigateUri.ToString());
    }
    

    注意:目前,我不会将我的回复标记为答案,因为其他用户可能会提出更好的解决方案(在这种情况下,我会将他/她的回复标记为答案)。

    请复制例外详细信息并将此信息添加到帖子中,好吗?@Jackdaw回应您的请求,我刚刚添加了一个更新部分。由于此代码正在我的计算机上运行,我只能建议找不到启动浏览器所需的一个文件。不幸的是,您的
    StackTrace
    日志不包含有关导致此异常的文件的任何信息。1) 检查系统事件日志。也许它包含了导致这种失败的更详细的信息。2) 尝试更改默认web浏览器。是否尝试使用
    UseShellExecute
    属性?@PavelAnikhouski您的建议有效(谢谢)。我发现你的建议对于
    .netcore
    (我正在使用的)来说是更好的。你可能想把它写成一个
    响应
    (可能是一行解释),这样其他读者就可以更好地从中受益。并且,我将把它标记为
    答案