开发者

email hyperlinkbutton

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 elsewher开发者_JS百科e and it works. I tried the same approach for this one and still get the error.


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.


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"

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜