好吧,经过大量搜索网络后,我能够通过汇总我找到的不同信息来编写以下解决方案。
首先,Silverlight 4(如SL3)使用不同的机制在客户端的网页中创建Silverlight控件。它使用< object>标记。
要传递初始化参数,你只需要
<param name="initParams" value="key1=value1,key2=value2" />
添加到page.aspx文件(从Web项目)对象标记下和SL应用程序将在收到这些2个参数Silverlight应用程序启动。
例如,使用从VS2010生成的默认aspx页面:
<object data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="100%" height="100%">
<param name="source" value="ClientBin/MyApp.xap"/>
<param name="onError" value="onSilverlightError" />
<param name="background" value="white" />
<param name="minRuntimeVersion" value="4.0.50401.0" />
<param name="autoUpgrade" value="true" />
<param name="initParams" value="key1=value1,key2=value2" />
<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>
要访问SL应用程序的参数,你只需要编写在App.xaml.cs文件中的以下内容:
private void Application_Startup(object sender, StartupEventArgs e)
{
var builder = new StringBuilder();
foreach (String key in e.InitParams.Keys)
builder.AppendFormat ("from InitParams: {0} = {1}",
key, e.InitParams[key]).AppendLine();
HtmlPage.Window.Alert (builder.ToString());
// Other code...
}
现在,这只允许参数的静态值。 要具有动态值,你只需要在initParam行更改为:
<param name="initParams" value="<%= string.Format("WCFReferenceURL={0}", ConfigurationManager.AppSettings["WCFReferenceURL"])%>" />
从Web服务器上的配置文件中获取值。 ;)
我希望这有助于一些可怜的灵魂在那里!