2011-01-19 38 views
6

ben şöyle Silverlight 4 bir mailto köprü düğmesini kullanmaya çalışıyorum:eposta hyperlinkbutton

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

ve ben uygulamasında tıkladığınızda alıyorum:

Web sayfası hata ayrıntıları

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) Zaman Damgası: Çar, 19 Ocak 2011 14:24:29 UTC

Mesaj: Silverlight Uygulama Kodu İşlenmemiş Hata: 4004
Kategori: ManagedRuntimeError
Mesaj: System.ArgumentException: İçerik URI yüklenemedi. URI geçersiz olabilir. Parametre isim: System.Windows.Navigation.NavigationService.NavigateCore de uri (Uri uri, NavigationMode modunda, Boolean suppressJournalAdd, Boole isRedirect) de System.Windows.Controls.Frame.Navigate (Uri kaynak) de MS.Internal.NavigationHelper.TryInternalNavigate() System.Windows.Controls.Primitives.ButtonBase en System.Windows.Controls.HyperlinkButton.OnClick() de MS.Internal.NavigationHelper.Navigate (Boolean checkUserInitiatedAction) de .adresinden OnMouseLeftButtonUp (MouseButtonEventArgs e) MS.Internal.JoltHelper.FireEvent de 0 System.Windows.Controls.Control.OnMouseLeftButtonUp (Kontrol Ctrl, EventArgs e) (IntPtr unmanagedObj, ıntptr unmanagedObjArgs, ınt32 argsTypeIndex, dize EventName) yapmak

Bu programatik olarak başka bir yerde çalışır. Bunun için aynı yaklaşımı denedim ve yine de hatayı aldım.

cevap

8

Bunu çözdüm. Çalışan hiperButton, bir alt pencerede (uzak iç içe denetleme), site şablonunda bulunmayan bir uygulamadır (Uygulama nesnesinin alt öğesi). Bu nedenle, site şablonundaki hiper bağlantı düğmesinin TargetName = "_ blank" belirtilmiş olması gerekir. Neden olduğundan emin değilsin.

0

Hata ile, xaml dosyasına bir tıklama olayı ekleyerek ve Tag = "" özelliğindeki url'yi depolayarak çalışabildim.

XAML:

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

Kod Arkası:

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

DÜZENLEME: popup blocker şimdi nedeniyle Hedefi değişen çağrılabilir daha az olasıdır " _blank "to" _self "

+0

NavigateUri dışındaki herhangi bir yöntemi gördükten pop up engelleyiciler tarafından engellenmiş gibi görünüyor. Çoklu tarayıcı desteğine bakıyorsanız, bu bir seçenek değildir. –

+0

Bu iyi bir nokta, popup engelleyicileri hakkında düşünmedim. Köprü hedefini, pop-up engelleyicileriyle "_self" olarak değiştirdim. Hedef bir mailto için önemli değil: – ShawnFeatherly

İlgili konular