【问题标题】:Silverlight 5 initParams Count always equals 0Silverlight 5 initParams 计数始终等于 0
【发布时间】:2012-09-02 05:12:29
【问题描述】:

我在堆栈上看到了 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];

}

【问题讨论】:

  • 我自己的代码使用:var initParams = new Dictionary&lt;string, string&gt;(Host.InitParams, StringComparer.OrdinalIgnoreCase); 将参数放入我使用的新字典中。我不记得我为什么这样做了..
  • 也许只是为了改变 StringComparer。
  • 我想我找到了您的问题:尝试将InitParams 放入正确的大小写!
  • 我已经尝试过使用 InitParams 和 initParams 和 initparams ... 都无济于事。我这样做只是为了在运行时传递一个变量,并且不想使用查询字符串参数。我可能只需要在短期内求助,直到我发现我做错了什么:/
  • @jv42 - 您是否能够在运行前在 html 标记本身的 InitParams - param 标记中设置值,然后再读取它?还是在应用运行后添加值,然后读取它们?

标签: silverlight-5.0 init-parameters


【解决方案1】:

在将解决方案升级到 Silverlight 5 后,我遇到了同样的问题。结果发现,虽然 app.xaml 被调用,但 WEB 项目已失去其“启动项目”状态。重置它会导致一切恢复正常。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-21
    • 2017-01-18
    • 2010-11-18
    • 1970-01-01
    • 2021-04-29
    • 1970-01-01
    相关资源
    最近更新 更多