2011-01-19 3 views
6

Я пытаюсь использовать кнопку с гиперссылкой в ​​почтовую в Silverlight 4, как так:электронной HyperlinkButton

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

и когда я нажимаю его в приложении я получаю:

сведения об ошибках веб-страницы

Агент пользователя: Mozilla/4.0 (совместимый; 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) Отметка: Ср, 19 января 2011 14:24:29 UTC

сообщение: Неизвестное Ошибка в Silverlight Application Код: 4004
Категория: ManagedRuntimeError
Сообщение: System.ArgumentException: Содержание для URI нельзя загрузить. URI может быть недействительным. Параметр Имя: URI на System.Windows.Navigation.NavigationService.NavigateCore (Uri Ури, режим NavigationMode, Boolean suppressJournalAdd, булева isRedirect) при System.Windows.Controls.Frame.Navigate (Uri источник) в MS.Internal.NavigationHelper.TryInternalNavigate() на MS.Internal.NavigationHelper.Navigate (Boolean checkUserInitiatedAction) при System.Windows.Controls.HyperlinkButton.OnClick() на System.Windows.Controls.Primitives.ButtonBase. OnMouseLeftButtonUp (MouseButtonEventArgs e) по адресу System.Windows.Controls.Control.OnMouseLeftButtonUp (Control Ctrl, EventArgs е) в MS.Internal.JoltHelper.FireEvent (IntPtr unmanagedObj, IntPtr unmanagedObjArgs, Int32 argsTypeIndex, String именем_события)

я это программно в другом месте, и это работает. Я попробовал такой же подход для этого и все еще получаю ошибку.

ответ

8

Я понял. ГиперссылкаButton, которая работает, находится в дочернем окне (вложенном контроле), которое отсутствует в шаблоне сайта (дочерний объект приложения). По этой причине, похоже, что гиперссылка в шаблоне сайта должна содержать TargetName = "_ blank". Не знаю, почему это так.

0

Мне удалось обойти эту ошибку, добавив событие click в 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"); 
    } 

EDIT: блокировки всплывающих окон теперь меньше шансов быть вызвана из-за изменения цели от " _blank "на" _self "

+0

Из того, что я видел, какой-либо метод, кроме как через NavigateUri, кажется заблокирован всплывающими блокаторами. Если вы ищете поддержку нескольких браузеров, это не вариант. –

+0

Это хороший момент, я не думал о блокировщиках всплывающих окон. Я изменил цель гиперссылки на «_self» с учетом блокировщиков всплывающих окон. Поскольку цель не имеет значения для mailto: – ShawnFeatherly

Смежные вопросы