2010-04-17 24 views
3

<Button Name="MyButton" Content="Test" FontStyle="Italic" />VS XAML設計人員如何知道如何自動填充某些值?

在上述按鈕的XAML定義中,FontStyle屬性設置爲斜體。當我點擊=標誌時,設計者能夠以某種方式填充列表供我選擇。這是如何實現的?

在回答之前,請認真考慮FontStyle屬性的類型FontStyle(它是一個結構)。這不是一個枚舉,對於VS在設計時列出來而言是微不足道的,那麼如何選擇顯示的選項的有效列表?還有一個完全獨立的FontStyles類,其中包含三個靜態字段,Italic,NormalOblique,它們恰好是VS在下拉列表中提供的三個項目。在FontStyle結構和FontStyles類之間是否存在映射,因爲我在對象瀏覽器和.NET Reflector中的許多地方查看過,並且無法從中確定任何內容。

謝謝!

我需要知道!*

*不是真的,但它會是不錯的:)

+0

哇,這很奇怪。通常我會說這是「TypeConverter.GetStandardValues」,但是「FontStyleConverter」不會覆蓋「GetStandardValues」或「GetStandardValuesSupported」。離奇。 – itowlson 2010-04-17 20:01:13

回答

1

XAML語言服務使用類型轉換器的GetStandardValues()來確定在類型的下拉列表中顯示的內容。例如,這與屬性網格所具有的相同。

不幸的是,框架提供的類型轉換器並不總是實現GetStandardValues(),所以設計者通常會爲很多這樣的類型提供內部替換。屬性網格和XAMl語言服務使用這些內部替換。

+0

有趣,這是有道理的。感謝你的回答! – Pwninstein 2010-04-24 15:31:23

0

我沒有答案,但一個有趣的事情是,有一個內部FontStyle枚舉。它被定義爲

internal enum FontStyle 
{ 
    Normal, 
    Oblique, 
    Italic 
} 

這可能是什麼被暴露在設計師使用智能感知MS.Internal.Text.TextInterface.Font風格。