электронная почта гиперссылка - PullRequest
6 голосов
/ 19 января 2011

Я пытаюсь использовать кнопку гиперссылки в качестве почтового сообщения в silverlight 4 примерно так:

<HyperlinkButton x:Name="hlbCustomerSupport" NavigateUri="mailto:customerservice@fofo.com" Content="customerservice@fofo.com"></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.30729; Медиа Центр ПК 6.0; InfoPath.2; .NET4.0C; .NET4.0E) Отметка времени: среда, 19 января 2011 г. 14:24:29 UTC

Сообщение: необработанная ошибка в Код приложения Silverlight: 4004
Категория: ManagedRuntimeError
Сообщение: System.ArgumentException: Контент для URI не может быть загружен. URI может быть недействительным. параметр Имя: Ури в System.Windows.Navigation.NavigationService.NavigateCore (Uri URI, режим NavigationMode, логический suppressJournalAdd, Boolean 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 есть System.Windows.Controls.Control.OnMouseLeftButtonUp (Control Ctrl, EventArgs e) в MS.Internal.JoltHelper.FireEvent (IntPtr unmanagedObj, IntPtr unmanagedObjArgs, Int32 argsTypeIndex, String eventName)

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

Ответы [ 2 ]

8 голосов
/ 19 января 2011

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

0 голосов
/ 08 февраля 2012

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

РЕДАКТИРОВАТЬ: блокирование всплывающих окон теперь реже вызывается из-за изменения цели с "_blank" на "_self"

...