【问题标题】:email hyperlinkbutton电子邮件超链接按钮
【发布时间】:2011-06-11 19:17:14
【问题描述】:

我正在尝试在 silverlight 4 中将超链接按钮用作 mailto,如下所示:

<HyperlinkButton x:Name="hlbCustomerSupport" NavigateUri="mailto:customerservice@fofo.com" Content="customerservice@fofo.com"></HyperlinkButton>

当我在应用程序中点击它时,我得到:

网页错误详情

用户代理:Mozilla/4.0(兼容; MSIE 8.0;视窗 NT 6.1;三叉戟/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729;媒体中心PC 6.0; InfoPath.2; .NET4.0C; .NET4.0E) 时间戳:2011 年 1 月 19 日,星期三 世界标准时间 14:24:29

消息:未处理的错误 Silverlight 应用代码:4004
类别:ManagedRuntimeError
消息:System.ArgumentException: 无法加载 URI 的内容。 URI 可能无效。范围 名称:uri at System.Windows.Navigation.NavigationService.NavigateCore(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 吃 System.Windows.Controls.Control.OnMouseLeftButtonUp(控制 ctrl, EventArgs e) 在 MS.Internal.JoltHelper.FireEvent(IntPtr unmanagedObj, IntPtr unmanagedObjArgs, Int32 argsTypeIndex, String eventName)

我在其他地方以编程方式执行此操作,它可以工作。我对此尝试了相同的方法,但仍然出现错误。

【问题讨论】:

    标签: silverlight hyperlink mailto


    【解决方案1】:

    我能够通过向 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”,现在不太可能调用弹出窗口阻止程序

    【讨论】:

    • 据我所知,除了通过 NavigateUri 以外的任何方法似乎都被弹出窗口阻止程序阻止。如果您正在查看多浏览器支持,这不是一个选项。
    • 这很好,我没有考虑弹出窗口拦截器。考虑到弹出窗口阻止程序,我将超链接目标更改为“_self”。由于目标对于 mailto 来说并不重要:
    【解决方案2】:

    我想通了。有效的超链接按钮位于子窗口(远嵌套控件)中,而无效的则位于站点模板(应用程序对象的子级)中。因此,站点模板中的超链接按钮似乎必须指定 TargetName="_blank"。不知道为什么会这样。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-05-08
      • 2013-08-03
      • 2020-08-30
      • 2015-07-26
      • 2022-11-22
      • 2017-12-25
      相关资源
      最近更新 更多