【问题标题】:HyperlinkButton NavigateUri does not work in SafariHyperlinkBut​​ton NavigateUri 在 Safari 中不起作用
【发布时间】:2018-04-18 10:09:32
【问题描述】:

我使用 HyperLinkBut​​ton 并在 c# 代码中为他添加点击方法。

代码方法:

void btnViewURL_Click(object sender, RoutedEventArgs e)
{
         if (string.IsNullOrWhiteSpace(viewURL) == false
         && this.decisionViewModel.IsURLValid(viewURL))
         {
             System.Windows.Browser.HtmlPage.Window.Navigate(new Uri(viewURL, UriKind.Absolute), "_blank");
         }
}

此代码在 ie 中有效,但在 Safari 中无效。

在我尝试在 xaml 中使用 NavigateUrl 属性之后。我添加了绑定,但是这种方法在 Safari 中也不起作用。如果我设置纯文本网址(例如 - “https://google.com”没有绑定,那么 Safari 会打开链接。

<HyperlinkButton Margin="8,0,0,0" x:Name="linkStaticURL" 
    NavigateUri="{Binding viewURL}"
    TargetName="_blank">
                <TextBlock Text="Reader"</TextBlock>
</HyperlinkButton>

我该如何解决这个问题?

【问题讨论】:

  • 你想显示的真实 URI 是什么?
  • viewURL 是在哪里定义的?这真的是 WPF 吗?那么 HyperlinkBut​​ton 是什么?

标签: xaml silverlight safari


【解决方案1】:

您可以使用Process.Start 在默认浏览器中打开网址:

void btnViewURL_Click(object sender, RoutedEventArgs e)
{
    if (string.IsNullOrWhiteSpace(viewURL) == false)
      && this.decisionViewModel.IsURLValid(viewURL))
    {
        System.Diagnostics.Process.Start(viewURL);
    }
}

如果您想启动特定的网络浏览器,您可以将其位置传递给此处建议的相同方法:

Launch Web URL in NON-default browser

除了设置NavigateUri 之外,您还应该处理RequestNavigate 事件:

Example using Hyperlink in WPF

【讨论】:

    猜你喜欢
    • 2022-01-19
    • 2015-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多