设为首页 收藏本站
查看: 1824|回复: 0

Windows phone 7 31天学习笔记 18:浏览器控件

[复制链接]

尚未签到

发表于 2015-5-13 11:49:54 | 显示全部楼层 |阅读模式
  原文地址:http://www.jeffblankenburg.com/post/31-Days-of-Windows-Phone-7c-Day-18-WebBrowser-Control.aspx
  这一次我们将会讨论浏览器控件。
  浏览器控件能干什么?
  虽然不太明显,但是浏览器控件能够让你的用户查看特定的网页。但是他不是一个标准的浏览器,因为他没有地址栏,收藏以及标签等。最好把它想做事html页面中的标记。你将会看到它能够自动缩放,这些都是内置的。
  另一个特色是这个控件能够加载本地或是网络内容。这一位置,如果我有一堆的html文档,我不必在程序中重新创建它们,直接将html页面嵌入在我的程序中。这要比数据传输简单的多。
  通过浏览器控件加载HTML内容
  尽让说到这里,就要展示具体做法。首先,我选哦添加一些文档到本地,我添加了一些测试目的的文档,这些都是由你自己决定的。
DSC0000.png
  然后,我放置两个按钮来加载不同的文件。如下,我们需要这些引用:

using System.IO;
using Microsoft.Xna.Framework;  你也许在想“XNA?”。我将会在以后告诉你XNA命名空间的强大,首先加载html为StreamReader,然后将html加载到浏览器控件中,这些需要使用.NavigateToString()方法:


StreamReader reader = new StreamReader(TitleContainer.OpenStream("html/wp7wiki.html"));
Browser.NavigateToString(reader.ReadToEnd()) 如果你想了解System.Xna.Framework或TitleContainer类,可以在MSDN找到。脚本默认禁止当你打算加载含有javascript的html的时候,你应当知道脚本默认是被禁止的。通过简单设置IsScriptEnabled属性能够将它开启:XAML:



C#:

Browser.IsScriptEnabled = true;  在程序与脚本之间交互
  如果你想能够让脚本来时html内容呈现方式多元化,这很简单。如果你想从程序向页面传输数据,你可以使用.InvokeScript()方法来实现,如下:


string returnValue = (string)Browser.InvokeScript("getText", "http://jeffblankenburg.com", "rocks", "awesomely");  想反过来做,你需要做额外的异步:设置一个脚本反应的句柄,为了这样做,我创建了一个.ScriptNotify事件句柄来处理脚本传输给我的数据。


void Browser_ScriptNotify(object sender, NotifyEventArgs e)
{
Browser.Navigate(new Uri(e.Value, UriKind.Absolute));
}  创建以后,只需要加如下代码完成实现:


window.external.Notify(http://jeffblankenburg.com);  因为很多时候你是在加载网络资源,你需要让用户知道正在发生什么。最好是使用进度条,展示用户我们在加载资源,请耐心等待。
  在浏览器控件中使用进度条
  MSDN有成堆的文章讨论这些,所以我不会说所有的内容。我将要做的是简单的创建一个等待动画给用户,这样他们知道你正在加载内容。为了使用进度条,我们需要设置IsIndeteminate=true,并且在恰当的时候将它显示或是隐藏。如下:
  XAML:
  
  C#:


void Browser_Navigating(object sender, NavigatingEventArgs e)
{
ProgBar.Visibility = Visibility.Visible;
}
void Browser_Navigated(object sender, System.Windows.Navigation.NavigationEventArgs e)
{
ProgBar.Visibility = Visibility.Collapsed;
}
你看到我使用Navigated以及Navigating事件来展示或是隐藏进度条。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-66586-1-1.html 上篇帖子: [转]解决Windows 7不识别DVD光驱的问题 下篇帖子: Windows Phone 7 SDK CTP 发布了
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表