【问题标题】:Creating a mailto: hyperlink in Silverlight Out Of Browser app创建 mailto:Silverlight Out Of Browser 应用程序中的超链接
【发布时间】:2014-03-15 03:22:27
【问题描述】:

有没有办法在 Silverlight 4 OOB 应用程序中创建 mailto: 超链接?谢谢!

编辑:根据一些讨论,可接受的答案将是与使用 HyperlinkBut​​ton 不同的方式,或者是在 IE 中没有额外弹出窗口的情况下使用 HyperlinkBut​​ton 的方式。

【问题讨论】:

  • 是的,有办法做到这一点。如果您提供更多上下文,我们可以为您提供更多帮助(即:发布一些代码)。
  • 我需要使用给定的电子邮件地址模拟 mailto 超链接。不确定还需要什么信息。
  • 好的...你见过/听说过HyperlinkButton控制吗?
  • 是的,我设置了 NavigateUri="mailto:tips@silverlighttips.com",但在使用时出现错误:“无法加载 URI 的内容。URI 可能无效。”
  • 这样做,它确实会打开一封新的电子邮件,但它也会打开一个新的浏览器窗口,其中包含 mailto:tips@silverlighttips.com 的 URL 和“导航到网页已取消”的消息在 IE 中。

标签: silverlight


【解决方案1】:

理想情况下,您最好发布一些代码,因为我不知道电子邮件地址是在设计时还是运行时已知/确定的,但尽管如此:

在 XAML 中:

<HyperlinkButton x:Name="mailButton" NavigateUri="mailto:somedude@example.com" TargetName="_blank"></HyperlinkButton>

在 C# 中:

HyperlinkButton hbtn = new HyperlinkButton();
hbtn.Name = "mailButton";
hbtn.TargetName = "_blank";
hbtn.NavigateUri = new Uri("mailto:somedude@example.com"); 
parent.Controls.Add(hbtn);

在设计时您不知道电子邮件地址的情况下,在方法中分配NavigateUri 属性的值相对简单。

【讨论】:

  • 我尝试了以下方法: 使用它时出现错误:“Content for无法加载 URI。URI 可能无效。"
  • 我也尝试了包含 TargetName="_blank" 并且它确实打开了一封新的电子邮件,但它也打开了一个新的浏览器窗口,其中包含 mailto:tips@silverlighttips.com 的 URL 和一条消息IE 中的“网页导航已取消”。
  • 有趣。也许尝试为TargetName 使用不同的值,看看你是否得到不同的结果?
  • 我会检查一下,如果我找到了,我会发布它。我在不同项目的不同机器上验证了相同的行为。
  • FWIW 我一直觉得 Silverlight OOB 在你提到的 IE 窗口打开等奇怪的副作用方面是一种野兽。
【解决方案2】:

我在 CodeProject 上发布了此问题的解决方案 http://www.codeproject.com/Answers/383879/Silverlight-mailto-HyperlinkButton-always-opens-an#answer2

本质上,不是使用默认行为,而是添加一个点击事件,然后调用 javascript location.href。这会停止打开额外的浏览器窗口。

private void TestLink_Click(object sender, RoutedEventArgs e)
{
     //Only run the click event if in browser because this will not work OOB
     if (Application.Current.IsRunningOutOfBrowser)
         return;

     var cmd = String.Format("location.href='mailto:test@test.com?subject=blah&body=something';",

     HtmlPage.Window.Eval(cmd);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-07
    • 1970-01-01
    • 1970-01-01
    • 2010-10-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多