有没有办法在Silverlight 4 OOB应用程序中创建mailto:超链接?谢谢!
编辑:根据一些讨论,一个可接受的答案与使用HyperlinkButton的方式不同,或者在IE中没有额外弹出窗口的情况下使用HyperlinkButton。
答案 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);
}