2011-08-11 82 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

相關問題