【问题标题】:Silverlight debugging, no list element viewSilverlight 调试,无列表元素视图
【发布时间】:2010-04-22 12:58:44
【问题描述】:

当我调试我的 Silverlight 应用程序并在内部使用列表时,我无法将鼠标悬停在列表上并查看列表中的项目。我只看到列表的 RAW 视图。

如果我想查看项目,我必须编写自己的代码,这很乏味。这对 Silverlight 来说是正常的吗?

在正常的 Console/WPF/... 应用程序中调试时,我确实有正确的列表视图。

示例:Silverlight(e.ResultDictionary<DateTime, decimal>): (链接:click

看看第一个例子中怎么没有'列表视图?

在这一个中,非 Silverlight:(链接:click

系统是 Windows 7 64 位,带有 Visual Studio 2010 和 Silverlight 4 SDK RC2。

【问题讨论】:

  • GetWeightDataCompletedEventArgs 中“结果”的类型是什么?
  • 应该是字典
  • 您是否从外部资源(如 Web 服务)接收字典?
  • 你真的可以打印出 e.Result 的类型而不是说它应该是什么吗?如果您右键单击您的服务参考并单击配置服务参考,则有多种选择来处理从外部调用接收到的字典。

标签: .net silverlight


【解决方案1】:

有一种解决方法可以在调试器中转储字典的内容。

  1. 在您的项目中,添加对 linq dll 的引用(例如 System.Core)

  2. 将以下语句添加到您的源文件中:

    使用 System.Linq;

  3. 在观察窗口中,输入:

    dic.Take(21)

  4. 然后展开“结果视图”组行。这应该会为您提供熟悉的键值对列表。

[rickpastoor 在 connect.microsoft.com 上针对错误 557741 报告了此解决方法]

【讨论】:

    【解决方案2】:

    Silverlight 的 Dictionary 类具有 [DebuggerTypeProxy] 属性,但它在工具集的当前版本中不起作用。在this thread 中也提到过。同样的建议,请在 connect.microsoft.com 上报告错误,以便他们了解它,希望它会在工具的官方 RTM 版本中得到修复。

    【讨论】:

      【解决方案3】:

      我尝试将字典从 WCF 发送到 Silverlight,我可以在调试器中看到数据。所以它也应该适合你。也许你的代码有问题?

      您使用的究竟是什么“日期”类?请像我一样尝试使用 DateTime。

      这是我的服务器端代码:

      public Dictionary<DateTime, decimal> GetDataUsingDataContract()
      {
          Dictionary<DateTime, decimal> x = new Dictionary<DateTime, decimal>();
          x[DateTime.Now] = 2;
          x[DateTime.Now.AddDays(2)] = 3;
          return x;
      }
      

      【讨论】:

      • 日期为日期时间。我复制了你的代码,但我仍然看不到我的字典。只是原始视图。 :( 我假设您使用的是 32 位?
      • e.Result 是 System.Collections.Generic.Dictionary 在我的例子中。这是 Silverlight 3。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-03-21
      • 2016-08-19
      • 2017-05-24
      • 2012-04-25
      • 1970-01-01
      • 2015-07-26
      • 2011-09-18
      相关资源
      最近更新 更多