Хорошо, после долгих поисков в сети я смог закодировать следующее решение, агрегировав различную информацию, которую нашел.
Во-первых, Silverlight 4 (например, SL3) использует другой механизм для создания элемента управления silverlight на веб-странице на клиенте. Он использует тег .
Чтобы передать параметры инициализации в приложение silverlight, вам просто нужно добавить
<param name="initParams" value="key1=value1,key2=value2" />
в файл page.aspx (из веб-проекта) под тегом объекта, и приложение SL получит эти 2 параметра при запуске.
Например, используя страницу aspx по умолчанию, сгенерированную из VS2010:
<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"])%>" />
чтобы получить значения из файла конфигурации на веб-сервере. ;)
Надеюсь, это поможет какой-нибудь бедной душе!