[Silverlight] InitParams 在Silverlight 物件起始時傳值進去

2010/08/11

話說,如果有時候因為專案需求,可能在Silverlight 一執行的時候
就需要把一些值給帶進去…
就可以能需要這方法,如果不是這麼的緊迫需求,倒是可以執行起來後

透過呼叫Javascript的方式取得(可參考 如何在Silverlight中呼叫Javscript)
最近剛好因為有朋友問就想說筆記一下…


首先得再HTML 中插入Silverlight的tag群中加入此一Element  “<param name="initparams" value="id=1,name=Dracula" />”
此時很明顯,我傳入兩個變數一個名為id , 另一個名為name

加入後Code 如下:

<object data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="100%" height="100%">
<param name="source" value="ClientBin/InitParaMemo.xap"    />
<param name="onError" value="onSilverlightError"     />
<param name="background" value="white"     />
<param name="minRuntimeVersion" value="4.0.50401.0"     />
<param name="initparams" value="id=9527,name=訪客"    />
<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><iframe id="_sl_historyFrame" style="visibility:hidden;height:0px;width:0px;border:0px"></iframe></div>





之後我們稍微修改一下 App.xaml.cs 中的 Application_Startup



其接用方法為 e.InitParams["變數名稱"]

private void Application_Startup(object sender, StartupEventArgs e)
{  
   this.RootVisual = new MainPage(e.InitParams["id"], e.InitParams["name"]);
}





先別急你現在Compile一定會錯 ,因為你多傳兩個參數進去…

所以我們在MainPage 中… 修改一下 constructor



public MainPage(string id,string name)
{  
MessageBox.Show(name + ",您好!!您的編號是"+id);
InitializeComponent();
}



接下來就可以編譯通過…



執行一下你會發現…



他在InitializeComponent 前就已經接到你要傳得值…



這時候如果配合asp.net 可以做的事情就很多…



這邊也不贅述…



如果覺得我寫得不夠清楚..可以參閱 http://msdn.microsoft.com/zh-tw/library/cc838255(VS.95).aspx



這邊有一段MSDN 的備註 稍微注意一下:



InitParams 屬性在執行個體化期間為一次性寫入,而在執行階段為唯讀。在初始化後無法設定這個屬性。當您在 HTML 網頁中建立 Silverlight 外掛程式的執行個體時,InitParams 初始化參數就會指定使用者定義的參數值。InitParams 提供一個便利的方式讓您從 HTML 文件物件模型 (DOM) 將自訂字串值傳遞至 Silverlight 程式撰寫模型。

每次MSDN的備註,都很喜歡來一些很有禪意的話…哈哈…



範例:





讚一下:




範例下載:




0 意見:

程式 . 生活 . D小調.@2010 | Binary Design: One Winged Angel.