2011-01-19 4 views
6

Tôi đang cố gắng sử dụng một nút siêu liên kết như một mailto trong Silverlight 4 như sau:email hyperlinkbutton

<HyperlinkButton x:Name="hlbCustomerSupport" NavigateUri="mailto:[email protected]" Content="[email protected]"></HyperlinkButton> 

và khi tôi nhấp vào nó trong ứng dụng tôi nhận được:

chi tiết lỗi trang web

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.307 29; Media Center PC 6.0; InfoPath.2; .NET4.0C; .NET4.0E) Timestamp: Wed, ngày 19 tháng một năm 2011 14:24:29 UTC

nhắn: Unhandled Lỗi trong Silverlight Mã Ứng dụng: 4004
Thể loại: ManagedRuntimeError
nhắn: System.ArgumentException: Content cho URI không thể tải được. URI có thể không hợp lệ. Parameter Tên: uri tại System.Windows.Navigation.NavigationService.NavigateCore (Uri uri , chế độ NavigationMode, Boolean suppressJournalAdd, Boolean isRedirect) tại System.Windows.Controls.Frame.Navigate (Uri nguồn) tại MS.Internal.NavigationHelper.TryInternalNavigate() tại MS.Internal.NavigationHelper.Navigate (Boolean checkUserInitiatedAction) tại System.Windows.Controls.HyperlinkButton.OnClick() tại System.Windows.Controls.Primitives.ButtonBase. OnMouseLeftButtonUp (MouseButtonEventArgs e) tại System.Windows.Controls.Control.OnMouseLeftButtonUp (Control ctrl, EventArgs e) tại MS.Internal.JoltHelper.FireEvent (IntPtr unmanagedObj, IntPtr unmanagedObjArgs, Int32 argsTypeIndex, String EventName)

tôi làm chương trình này ở nơi khác và nó hoạt động. Tôi đã thử phương pháp tương tự cho điều này và vẫn nhận được lỗi.

Trả lời

8

Tôi đã tìm ra. HyperlinkButton hoạt động trong một cửa sổ con (kiểm soát lồng nhau), cái không có trong mẫu site (Child của đối tượng Application). Vì lý do này, có vẻ như siêu liên kết trong mẫu site phải có TargetName = "_ blank" được chỉ định. Không chắc chắn lý do tại sao đây là.

0

Tôi đã có thể khắc phục lỗi bằng cách thêm sự kiện nhấp vào xaml và lưu trữ url trong thuộc tính Tag = "".

XAML:

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

Mã Đằng sau:

private void HyperlinkButton_Click(object sender, RoutedEventArgs e) 
    { 
     HyperlinkButton button = (HyperlinkButton)sender; 
     System.Windows.Browser.HtmlPage.Window.Navigate(new Uri(button.Tag.ToString()), "_self"); 
    } 

EDIT: sổ popup blocker nay ít có khả năng được gọi do thay đổi mục tiêu từ " _blank "tới" _self "

+0

Từ những gì tôi đã thấy bất kỳ phương pháp nào khác hơn là thông qua NavigateUri dường như bị chặn bởi pop up blockers. Nếu bạn đang xem xét hỗ trợ đa trình duyệt thì đây không phải là một lựa chọn. –

+0

Đó là một điểm tốt, tôi không nghĩ về trình chặn cửa sổ bật lên. Tôi đã thay đổi mục tiêu siêu liên kết thành "_self" bằng các trình chặn cửa sổ bật lên. Vì mục tiêu không quan trọng đối với mailto: – ShawnFeatherly