1

我有一個附加屬性,我正在使用設計時裝配向設計人員註冊。我使用AttachedPropertyBrowsableForTypeAttribute,以便在選擇TextBox時顯示該屬性。爲什麼我的附加屬性顯示在Blend設計器中,但不在VS2010中?

該屬性在Expression Blend 4中顯示正常,但未在Visual Studio 2010 SP1中顯示。

Expression Blend

Visual Studio

有誰知道爲什麼它不會在Visual Studio中顯示? 您可以從這裏下載一個測試項目來演示問題: Test Project

謝謝!

回答

1

簡短的回答的確是因爲蘋果酒設計師是一個完整的廢話。這裏是長答案:

Microsoft blog:

有一點要記住的是,呈現在設計師 附加屬性的要求之一是,所屬類型需要 通過已裝設計師。只要設計人員 訪問該類型,就會發生這種情況,因爲它位於XAML源中,或者是從XAML源加載的元素的依賴關係 。

所以問題是蘋果酒設計師只關心已經加載的類型。您可以通過將包含的網格更改爲StackPanel來查看此示例:Grid.Row和Grid.Column附加的屬性將從Visual Studio中的TextBox屬性列表中消失。 Blend設計表面以某種方式更寬容並認可您的類型。另外,即使在使用StackPanel時,Blend也會盡職盡責地顯示Grid.IsSharedSizeScope(在佈局屬性下)。看看Microsoft如何使用和支持附加屬性,他們似乎贊成在佈局容器上使用它們。例如有AttachedPropertyBrowsableForChildrenAttribute。這就是爲什麼你可以爲Canvas元素的子節點執行show Canvas.Left等操作。我得到的印象是,他們沒有充分考慮到大多數人現在實際上是如何使用附加屬性(將功能拉到對象的側面而不是功能從父母流下來)。

相關問題