2011-01-19 83 views
6

我想在Silverlight 4中使用超鏈接按鈕作爲一個mailto像這樣:電子郵件hyperlinkbutton

<HyperlinkButton x:Name="hlbCustomerSupport" NavigateUri="mailto:[email protected]" Content="[email protected]"></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.307 29; 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可能無效。參數 名稱:在 System.Windows.Navigation.NavigationService.NavigateCore URI(URI URI,NavigationMode模式,布爾 suppressJournalAdd,布爾 isRedirect)在 System.Windows.Controls.Frame.Navigate在 (URI 源) MS.Internal.NavigationHelper.TryInternalNavigate() 在 MS.Internal.NavigationHelper.Navigate(布爾 checkUserInitiatedAction)在 System.Windows.Controls.HyperlinkBut​​ton.OnClick() 在 System.Windows.Controls.Primitives.ButtonBase。 OnMouseLeftButtonUp(MouseButtonEventArgs e)at System.Windows.Controls.Control.OnMouseLeftButtonUp(控制 CTRL,EventArgs e)上 MS.Internal.JoltHelper.FireEvent(IntPtr的 unmanagedObj,IntPtr的unmanagedObjArgs, 的Int32 argsTypeIndex,字符串eventName的)

我做這在其他地方編程,它的作品。我爲這個嘗試了同樣的方法,但仍然出現錯誤。

回答

8

我想通了。工作的超鏈接按鈕位於子窗口(遠嵌套控件)中,不在網站模板中(應用程序對象的子項)。由於這個原因,網站模板中的超鏈接按鈕必須具有指定的TargetName =「_ blank」。不知道這是爲什麼。

0

我能夠通過向xaml添加單擊事件並將該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「

+0

從我所看到的任何方法,而不是通過NavigateUri似乎被彈出阻止程序阻止。如果您正在尋找多瀏覽器支持,這不是一個選項。 – 2012-07-19 15:29:04