程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> 關於.NET >> silverlight 5.0 入門

silverlight 5.0 入門

編輯:關於.NET
接了個單子,非要用Silverlight 5來作一個項目,之前從來沒接觸過這東西,為了工作,硬著頭皮也要上了。摸索了一晚上,大至整理出一些項目中需要的東西,以下作為初探記錄:

Silverlight 5與Javascript的交談方式

Silverlight 5屬於客戶端的東西,客戶端的東西與服務器端交流,第一時間想到了基於javascript的ajax這個萬能膠,所以先從Silverlight 5與Javascript交互方式入手。

一、Silverlight 5發言,Javascript傾聽

從Silverlight 5裡向Javascript發送程序運行請求。
Silverlight 5端代碼具體如下:

HtmlPage.Window.Invoke("Javascript函數方式", "傳值-Oyiboy");

通過以上代碼可以直接在Silverlight 5裡運行Javascript的腳本代碼,並發送必要的數據出來。

二、Javascript發言,Silverlight 5傾聽

Javascript使用ajax獲取服務器端數據後發送給Silverlight 5,以達到Silverlight 5與服務器端的交互效果。
Silverlight 5端代碼具體如下:

//設置值
[ScriptableMember()]//這行是關鍵,必須有這個javascript才能請求到這個方法
public void setVal(string D)
{
this.textView.Text = D;
}
//javascript主動要求返回值
[ScriptableMember()]
public string returnVal()
{
return this.textView.Text;
}
Html代碼調整:
需要在Silverlight 5插件的object代碼內裡添加以下參數設置句,以達到插件在加載後獲取siliverlight對象。
<param name="onLoad" value="siliverLoaded" />

Javascript代碼具體如下:
//siliverlight對象
var siliverlightObj = null;
//上面那個HTML代碼內設置的Silverlight 5 onLoad事件觸發的函數
function siliverLoaded(sender, args) {
siliverlightObj = sender.getHost();
}

//以下代碼中的.buttonSet和.buttonReu是兩個帶這些class的按鈕,按鈕就不詳細寫出來了
//這個是運行Silverlight 5內的setVal方法
$(".buttonSet").click(function () {
siliverlightObj.Content.Main.setVal("javascript傳入值-Oyiboy");
})
//這個是運行Silverlight 5內的returnVal方法
$(".buttonReu").click(function () {
alert(siliverlightObj.Content.Main.returnVal());
});

以上幾個方式,靈活使用的活基本上就完全解決了Silverlight 5與服務器端之間的交流,好吧,雖然這篇的東西的主題是Silverlight 5與Javascript,但最終目的還是Silverlight 5與服務器端的交互,反正ajax也不是什麼新物,所以就跳過了。

感想:通過Silverlight 5的對象siliverlightObj.Content.Main這一大竄東西來看,siliverlightObj還能作更多的事了,具體還要慢慢摸索了,如果以後有需要用到的話,還可能會出這個的說明文章吧,或許。

補漏:
關於siliverlightObj.Content.Main中的Main是指在Silverlight 中app.xaml的Application_Startup事件中注冊的訪問名稱,具體代碼如下:
private void Application_Startup(object sender, StartupEventArgs e)
{
this.RootVisual = new MainPage();
System.Windows.Browser.HtmlPage.RegisterScriptableObject("Main", this.RootVisual);
}

從代碼中可知,如果有多個xaml頁的話,只要在這裡注冊不同的名稱就可以引用不同xaml頁內聲明的Javascript方法了。
剛剛整理代碼時在APP.xaml發現這句代碼才想起把這個給漏了,今天補回。
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved