email hyperlinkbutton

白昼怎懂夜的黑 提交于 2019-12-01 16:22:26

问题


I'm trying to use a hyperlink button as a mailto in silverlight 4 like so:

<HyperlinkButton x:Name="hlbCustomerSupport" NavigateUri="mailto:customerservice@fofo.com" Content="customerservice@fofo.com"></HyperlinkButton>

and when I click it in the application I get:

Webpage error details

User Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/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) Timestamp: Wed, 19 Jan 2011 14:24:29 UTC

Message: Unhandled Error in Silverlight Application Code: 4004
Category: ManagedRuntimeError
Message: System.ArgumentException: Content for the URI cannot be loaded. The URI may be invalid. Parameter name: uri at System.Windows.Navigation.NavigationService.NavigateCore(Uri uri, NavigationMode mode, Boolean suppressJournalAdd, Boolean isRedirect) at System.Windows.Controls.Frame.Navigate(Uri source) at MS.Internal.NavigationHelper.TryInternalNavigate() at MS.Internal.NavigationHelper.Navigate(Boolean checkUserInitiatedAction) at System.Windows.Controls.HyperlinkButton.OnClick() at System.Windows.Controls.Primitives.ButtonBase.OnMouseLeftButtonUp(MouseButtonEventArgs e) at System.Windows.Controls.Control.OnMouseLeftButtonUp(Control ctrl, EventArgs e) at MS.Internal.JoltHelper.FireEvent(IntPtr unmanagedObj, IntPtr unmanagedObjArgs, Int32 argsTypeIndex, String eventName)

I do this programatically elsewhere and it works. I tried the same approach for this one and still get the error.


回答1:


I figured it out. The hyperlinkButton that works is in a child window (far nested control), the one that doesn't is in the site template (Child of the Application object). For this reason it appears that the hyperlinkbutton in the site template must have TargetName="_blank" specified. Not sure why this is.




回答2:


I was able to work around the error by adding a click event to the xaml and storing the url in the Tag="" property.

XAML:

<HyperlinkButton Content="PDR Drug Handbook" Tag="http://www.pdrhealth.com/" FontSize="14" Click="HyperlinkButton_Click" />

Code Behind:

private void HyperlinkButton_Click(object sender, RoutedEventArgs e)
    {
        HyperlinkButton button = (HyperlinkButton)sender;
        System.Windows.Browser.HtmlPage.Window.Navigate(new Uri(button.Tag.ToString()), "_self");
    }
  • http://forums.silverlight.net/t/245500.aspx/1

EDIT: popup blockers are now less likely to be invoked due to changing the target from "_blank" to "_self"



来源:https://stackoverflow.com/questions/4736358/email-hyperlinkbutton

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!