2011-08-11 45 views
1

我正在开发一个Silverlight项目,最近我的团队中有人在我们的应用程序中添加了var popups = VisualTreeHelper.GetOpenPopups()。当我从源代码控制中获得他们的代码时,我收到一个编译错误,指出在VisualTreeHelper上找不到GetOpenPopupsVisualTreeHelper是来自System.Windows.Media命名空间的对象,并且我的代码文件(对于此文件)与我的团队其余成员之间没有区别。在对象浏览器,我可以看到,在System.Windows.Media命名空间下的System.Windows装配,GetOpenPopups方法没有列出对我来说,却是我的团队的其余部分。看起来,我们在某种程度上有这些程序集的不同版本,但没有关于参考版本在项目/解决方案中不正确的警告。为什么Silverlight中的系统对象缺少方法?

缺少什么我在这里?为什么GetOpenPopups()错过了我(而不是我的团队的其他人)?

回答

1

在预感我下载并安装最新的Silverlight的SDK版本(在项目内无需更改代码),而现在的方法显示在VisualTreeHelper起来。自然地,GetOpenPopups是最近添加的方法(自Silverlight 4开始)。我以为我之前已经安装了SDK,自从我们大约一年前开始项目以来,我们一直在针对Silverlight 4进行开发,所以我仍然对它为什么不能在我的机器上使用感到困惑。没有关于版本与我的机器上可用版本不同的警告或错误,以及我们的项目中引用的内容。看起来我可能需要阅读.NET程序集中的版本控制,以更好地理解它的工作方式,并确保这不会成为部署时的问题。感谢您的建议家伙。

2

你确定你引用的程序集的Silverlight的版本? standard .Net version不包括方法,而SL one

+0

是的,我正在使用Silverlight版本。它在Silverlight项目中引用,它不会让您添加对非Silverlight程序集的引用。 –

+0

嗯......你在开发一个Winphone7应用程序吗? – dlev

0

Silverlight的 VisualTreeHelperGetOpenPopups不是其中之一。真正的问题是,为什么你的团队中的其他人看到一种不存在的方法?

一种情况可能是,代码文件是在另一个项目的WPF项目挂钩,但有人已经忘记了保护的代码这个块用的#if SILVERLIGHT。对他们来说看起来很好,因为他们目前在WPF项目上工作。

这里的教训是,首先还是只检查在线MSDN文档平原回答之前尝试。

+0

嘿安东尼,跑过你的博客文章[编码小子 - 视觉树枚举(http://geekswithblogs.net/codingbloke/archive/2010/12/19/visual-tree-enumeration.aspx)最近和书签它。实际上,我把这篇文章转介给了一位在数据网格中使用单元格的人。感谢您的建议,但事实证明这是一个版本问题。 MSDN说''GetOpenPopups'是Silverlight 4(我们已经使用了一年以上,但由于某种原因,我必须有一个旧的程序集)的新功能。我们确实有一些共享的WPF代码,但这不是它的一部分。 –

+0

@Adam:这很有趣,我倾向于使用.chm文件进行文档访问,我发现它的响应速度更快。你完全正确GetOpenPopups存在,它只是在.chm文件中没有记录。可能是我应该去找一个更新的.chm文件。 – AnthonyWJones

相关问题