VS XAML设计器如何知道自动填充某些值的内容?

时间:2010-04-17 04:54:39

标签: .net wpf xaml visual-studio-2010 designer

<Button Name="MyButton" Content="Test" FontStyle="Italic" />

在上面的按钮XAML定义中,FontStyle属性设置为Italic。当我点击=符号时,设计师能以某种方式填充列表供我选择。这是如何实现的?

在回答之前,请考虑FontStyle属性是否恰当,类型为FontStyle(这是一个结构)。这不是枚举,对于VS在设计时列出来是微不足道的,那么如何选择显示的有效选项列表呢?还有一个完全独立的FontStyles类,其中包含三个静态字段ItalicNormalOblique,恰好是VS中提供的三个项目下面的清单。在FontStyle结构体和FontStyles类之间是否存在一些映射,因为我在对象浏览器和.NET Reflector中查看了很多地方并且无法确定任何内容无论是。

谢谢!

我需要知道!*

*不是真的,但是很高兴:)

2 个答案:

答案 0 :(得分:1)

XAML语言服务使用类型转换器的GetStandardValues()来确定要在类型的下拉列表中显示的内容。例如,这与属性网格的作用相同。

不幸的是,框架提供的类型转换器并不总是实现GetStandardValues(),因此设计人员通常会为许多此类类型提供内部替换。属性网格和XAMl语言服务使用这些内部替换。

答案 1 :(得分:0)

我没有答案,但有一件有趣的事情是内部的FontStyle枚举。 MS.Internal.Text.TextInterface.Font样式,定义为

internal enum FontStyle
{
    Normal,
    Oblique,
    Italic
}

这可能是设计师用于智能感知的内容。