我在这里看到关于堆栈的this文章和关于Silverlight MSDN的this文章,但它们没有解决Silverlight5问题。请参阅下面的html主机文档div代码和C#代码来调用它。我得到一个“给定的密钥不在字典中。”每次都是错误,每次.InitParams
属性计数也为0。有人知道这方面的解决方案吗?我觉得这是Silverlight5中的一个错误。此外,如果有人有一个很好的清洁替代方式从主机html对象标签获取信息 - 我也会接受这一点。
标记:
<div id="silverlightControlHost">
<object data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="400" height="300">
<param name="source" value="ClientBin/MySilverlightApplication.xap"/>
<param name="onError" value="onSilverlightError" />
<param name="background" value="white" />
<param name="minRuntimeVersion" value="5.0.61118.0" />
<param name="autoUpgrade" value="true" />
<param name="initParams" value="rootLocation=someLocation" />
<a href="http://go.microsoft.com/fwlink/?LinkID=149156&v=5.0.61118.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>
从静态属性中检索C#:
private const String rootLocation= "rootLocation";
internal String RootLocation {
get
{
String location = App.Current.Host.InitParams[rootLocation];
return location;
}
}
从AppStartUp
事件中检索C#:
private const String rootLocation= "rootLocation";
private void Application_Startup(object sender, StartupEventArgs e)
{
this.RootVisual = new MainPage();
String location = e.InitParams[rootLocation];
}
答案 0 :(得分:3)
在升级Silverlight 5的解决方案之后,我遇到了同样的问题。事实证明,尽管app.xaml被调用,但WEB项目已经失去了“启动项目”状态。重置这一切导致一切都恢复正常。