Silverlight 5 initParams Count始终等于0

时间:2012-09-08 17:37:27

标签: silverlight-5.0 init-parameters

我在这里看到关于堆栈的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];

}

1 个答案:

答案 0 :(得分:3)

在升级Silverlight 5的解决方案之后,我遇到了同样的问题。事实证明,尽管app.xaml被调用,但WEB项目已经失去了“启动项目”状态。重置这一切导致一切都恢复正常。