博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Sil“.NET研究”verlight与HTML双向交互
阅读量:7063 次
发布时间:2019-06-28

本文共 2262 字,大约阅读时间需要 7 分钟。

  Silverlight具备很好的用户体验,但有时需要在页面的布局上进行特殊处理,比如作为webpart集成到Sharepoint中等等。

  HTML和Silverlight之间的双向交互可以更灵活的使用Silverlight进行开发,上午摸索了一下,记录在此。

  一,向Silverlight传递数据,实现个性化加载

  Silverlight在HTML中的引用是:

<
object
data
=
"
data:application/x-silverlight-2,
"
type
=
"
application/x-silverlight-2
"
width
=
"
100%
"
height
=
"
100%
"
>
          
<
param name
=
"
source
"
value
=
"
ClientBin/VideoCenter.xap
"
/>
          
<
param name
=
"
onError
"
value
=
"
onSilverlightError
"
/>
          
<
param name
=
"
background
"
value
=
"
white
"
/>
          
<
param name
=
"
minRuntimeVersion
"
value
=
"
4.0.50401.0
"
/>
          
<
param name
=
"
autoUpgrade
"
value
=
"
true
"
/>
                    
<
a href
=
"
http://go.microsoft.com/fwlink/?LinkID=149156&v=4.0.50401.0
"
style
=
"
text-decoration:none
"
>
              
<
img src
=
"
http://go.microsoft.com/fwlink/?LinkId=161376
"
alt
=
"
Get Microsoft Silverlight
"
style
=
"
border-style:none
"
/>
          
</ a
>
</
object
>

  这种引用插件的方式提供了一系列的参数来实现个性加载,上面的代码中我们加了一行参数

<
param name
=
"
initParams
"
value
=
"
CategoryId=1 上海闵行企业网站设计与制作="color: #800000;">"
/>

  我们可以在Silverlight中处理这些参数,打开Silverlight应用程序的App代码文件,加上接收参数的代码

private
void Application_Startup(
object
sender, StartupEventArgs e)
        {
            
if
(e.InitParams.Count !
=
0
)
            {
                foreach(var item in e.InitParams)
                {
                    this.Resources.Add(item.Key, item.Value);
                }
            }
        &nbsp;   this.RootVisual
=
new
MainPage();
        }

  我们看到对e.InitParams的处理,即可得到了HTML中传进来的参数,实现个性化加载:

if
(App.Current.Resources[
"
CategoryId
" ]!
=
null
)
            {
                
int
cateId
=
int
.Parse(App.Current.Resources[
"
CategoryId
"
].ToString());
                CategoryItem c
=
new
CategoryItem();
                c.CategoryID
=
cateId;
                this.gridOfList.Children.Add(c);
            }

  二,Silverlight调用HTML中的脚本资源,实现自身的样式等修改

        首先我们可以在加载Silverlight组件的页面上编写一段Javascript脚本

function
InvokePlayer(videoId) {
            document.getElementById(
"
divCategory
"
).style.display
=
"
none
"
;
         &nbsp;  var player
=
document.getElementById(
"
divPlayer
"
);
            player.style.width
=
"
100%
"
;
            player.style.height
=
"
600px
"
;
}

  怎么在Silverlight中调用这个脚本呢?我们可以在某个事件中调用Silverlight提供的类方法

System.Windows.Browser.HtmlPage.Window.Invoke(
"
InvokePlayer
"
, videoId);

  当然类似的方法还有几个:

(HtmlPage.Window.GetProperty(
"
InvokePlayer
"
)
as
ScriptObject)InvokeSelf(
"
Good Function!
"
);HtmlPage.Window.Eval(
"
document.getElementById('result')
"
)
as
HtmlElement…

  即可实现调用脚本。经过以上的两个方法即可实现HTML和Silverlight之间双向传递数据的功能。

转载地址:http://nzill.baihongyu.com/

你可能感兴趣的文章
知识碎片
查看>>
鱼鹰软件签约中影集团电影数字制作基地
查看>>
node基础面试事件环?微任务、宏任务?一篇带你飞
查看>>
Windows系统下类UNIX环境---Cygwin安装
查看>>
AWE 2017逛展第一天,智能家居厂商逐步打破壁垒
查看>>
Java原始封装常用HttpRequest
查看>>
「镁客·请讲」北斗金控肖鹏麟:发展十多年后,如今的北斗产业在市场面临三大困境...
查看>>
阿里云将在欧洲建立数据中心,预计在伦敦或瑞典落地
查看>>
ASCSDK-------通用包接入文档(UNITY篇)
查看>>
区块链研习 | DAG网络:Blockless无区块概念将解决区块链交易性能问题
查看>>
ASP.NET CORE下取IP地址
查看>>
Jenkins忘记密码的修复方法(Windows/Linux)
查看>>
如何给域名配置https证书
查看>>
mysql数据库的备份与恢复(附测试截图)
查看>>
linux系统部署mongodb数据库
查看>>
区块链应用 | 最全区块链生态图谱发布,一张图看清2400个典型项目
查看>>
AI又来抢饭碗!专利显示迪士尼要开发卡通机器人
查看>>
ajax跨域
查看>>
第二届互联网安全责任论坛举办泛娱乐安全成关注焦点
查看>>
关于阵列卡的配置参数Cache Policy(缓存策略)
查看>>