在Silverlight Out Of Browser应用程序中创建mailto:超链接

时间:2011-08-16 13:30:10

标签: silverlight

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

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

2 个答案:

答案 0 :(得分:3)

理想情况下,发布一些代码会很高兴,因为我不知道电子邮件地址是在设计时或运行时是已知/确定的,但仍然是:

在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属性的值相对简单。

答案 1 :(得分:1)

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

基本上,不是使用默认行为,而是添加click事件,然后调用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);
}