我正在尝试使用超链接按钮作为silverlight 4中的mailto,如下所示:
<HyperlinkButton x:Name="hlbCustomerSupport" NavigateUri="mailto:customerservice@fofo.com" Content="customerservice@fofo.com"></HyperlinkButton>
当我在应用程序中单击它时,我得到:
网页错误详情
用户代理:Mozilla / 4.0(兼容; MSIE 8.0; Windows NT 6.1;三叉戟/ 4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.2; .NET4.0C; .NET4.0E)时间戳:2011年1月19日星期三 14:24:29 UTC
消息:未处理的错误 Silverlight应用代码:4004
类别:ManagedRuntimeError
消息:System.ArgumentException: 无法加载URI的内容。 URI可能无效。参数 姓名:uri at System.Windows.Navigation.NavigationService.NavigateCore(URI uri,NavigationMode模式,布尔值 suppressJournalAdd,布尔值 isRedirect)在 System.Windows.Controls.Frame.Navigate(URI 来源) MS.Internal.NavigationHelper.TryInternalNavigate() 在 MS.Internal.NavigationHelper.Navigate(布尔 checkUserInitiatedAction)at System.Windows.Controls.HyperlinkButton.OnClick() 在 System.Windows.Controls.Primitives.ButtonBase.OnMouseLeftButtonUp(MouseButtonEventArgs 吃 System.Windows.Controls.Control.OnMouseLeftButtonUp(控制 ctrl,EventArgs e)at MS.Internal.JoltHelper.FireEvent(IntPtr的 unmanagedObj,IntPtr unmanagedObjArgs, Int32 argsTypeIndex,String eventName)
我在其他地方以编程方式执行此操作。我尝试了同样的方法,仍然得到错误。
答案 0 :(得分:8)
我明白了。有效的hyperlinkButton位于子窗口(远嵌套控件)中,而不在站点模板中的那个(Application对象的Child)。因此,网站模板中的超链接按钮似乎必须指定TargetName =“_ blank”。不知道为什么会这样。
答案 1 :(得分:0)
我能够通过向xaml添加click事件并将url存储在Tag =“”属性中来解决错误。
XAML:
<HyperlinkButton Content="PDR Drug Handbook" Tag="http://www.pdrhealth.com/" FontSize="14" Click="HyperlinkButton_Click" />
代码背后:
private void HyperlinkButton_Click(object sender, RoutedEventArgs e)
{
HyperlinkButton button = (HyperlinkButton)sender;
System.Windows.Browser.HtmlPage.Window.Navigate(new Uri(button.Tag.ToString()), "_self");
}
编辑:由于将目标从“_blank”更改为“_self”,弹出窗口阻止程序现在不太可能被调用