• 在Silverlight中打开网页的几种方法


    在Silverlight中打开网页是一件很简单的事情,本文来概述一下这几种方法,你会发现,每一种方法需要编写的代码都少的可怜,甚至没有。

    1.HyperLinkButton控件

    这是最简单的方法,只需要设置几个属性即可:

    • NavigateUri:想要打开的网页地址
    • TargetName:目标框架,既_blank、_parent等

    例如:

    <HyperlinkButton NavigateUri="http://coding.windstyle.cn" TargetName="_blank" />

    注意:如果Silverlight对象的EnableNavigation设置为“none”的话,会抛出异常。

    2.HtmlWindow.Navigate

    如果需要以编程的方式打开页面的话,就可以调用HtmlWindow.Navigate方法。

    例如:

    System.Windows.Browser.HtmlPage.Window.Navigate(new Uri("http://blog.windstyle.cn", UriKind.Absolute), "_blank");

    注意:

    • 只有当Silverlight运行在浏览器中时才可以调用此方法。
    • 如果Silverlight对象的EnableHtmlAccess设置为“false”的话,会抛出异常。

    3.HtmlPage.PopupWindow

    调用HtmlPage.PopupWindow方法会以弹出窗口的形式打开网页。

    例如:

    System.Windows.Browser.HtmlPage.PopupWindow(new Uri("http://coding.windstyle.cn", UriKind.Absolute),
    "_blank",
    new System.Windows.Browser.HtmlPopupWindowOptions()
    {
    Width = 500,
    Height = 500
    });

    注意:

    • 只有当Silverlight运行在浏览器中时才可以调用此方法。
    • 如果Silverlight对象的EnableHtmlAccess设置为“false”的话,会抛出异常。
    • 如果Silverlight对象的AllowHtmlPopupwindow需要设置为“true”。
    • 只能在Silverlight的可见区域里、由用户触发的单击事件中调用此方法,且每个事件中只能调用一次此方法。
    • 可以通过System.Windows.Browser.HtmlPage.IsPopupWindowAllowed属性来检查是否满足上述条件。
    • 如果浏览器不阻止Javascript的window.open调用的话,此方法还会返回一个HtmlWindow对象,否则返回null。

    4.脱离浏览器时打开网页

    以上两种编程的方法都只能在浏览器中进行,如果想要在脱离浏览器运行的时候打开网页的话,需要稍微写几行代码。思路很简单,既然HyperLinkButton控件是在任何情况下都可以通用的,那么就从它来派生一个类:

    internal class OOBHyperLinkButton : HyperlinkButton
    {
    void DoClick()
    {
    base.OnClick();
    }
     
    public static void OpenWebPage(Uri uri, string targetName)
    {
    OOBHyperLinkButton btn = new OOBHyperLinkButton();
    btn.NavigateUri = uri;
    btn.TargetName = targetName;
    btn.DoClick();
    }
    }

    然后只需要调用OOBHyperLinkButton.OpenWebPage 即可。

    本文来自Windie Chai的博客,原文地址:http://coding.windstyle.cn/2011/01/01/open-web-page-in-silverlight/

  • 相关阅读:
    (四十九)Quartz2D自定义控件
    (四十八)Quartz2D引擎进阶
    (四十七)Quartz2D引擎初步
    (四十六)内存管理的复习
    (四十五)Modal 模态窗口 -遮盖
    (四十四)TabBarController和NagivationController配合
    (四十三)UITabBarController和AppDelegate的一些细节
    (四十二)tableView的滑动编辑和刷新 -局部刷新和删除刷新 -待解决问题
    linux命令——svn分支创建、合并
    C++异常处理
  • 原文地址:https://www.cnblogs.com/yalong_xiang/p/2549565.html
Copyright © 2020-2023  润新知