Intellisense在XAML编辑中查找Brush属性的选项时会去哪里?

3
在WPF应用程序中,如果我想创建一个矩形,我会在XAML中开始编写以下内容:
<Rectangle Fill=

在我输入最后一个=字符后,Visual Studio的Intellisense会给出一堆选项供我选择Fill属性,例如AliceBlue、AntiqueWhite等。我已经发现这些常量来自于Brushes类,但是在我的自定义类中定义的常量不会包含在该属性的选项列表中。所以我有两个问题。
  1. Fill属性的类型为Brush。类型Brush是普通类型,而不是枚举类型。Intellisense如何查找此属性的选项?
  2. 是否有可能让Intellisense考虑WPF核心程序集之外定义的对象作为某个属性的选项?
谢谢
2个回答

0

Intellisense会从System.Windows.Media.Brushes中提取信息,其中有一些默认的SolidColorBrush值。您也可以使用任何Brush类型,比如LinearGradientBrushRadialGradientBrush或者ImageBrush。如果您想要定义自己的颜色,可以使用十六进制值表示颜色(例如#FFFF0000,表示aRGB值为255不透明度,255红色,0绿色,0蓝色),或者在XAML中定义资源并使用StaticResource或者DynamicResource引用它们(如果您希望这个值在运行时被更改)。

Intellisense使用反射来查找变量、方法、函数。颜色列表来自于这个类,它看起来像这样:

public sealed class Brushes {
    public static SolidColorBrush AliceBlue {
        get {
            return KnownColors.SolidColorBrushFromUint(-984833);
        }
    }

    public static SolidColorBrush AntiqueWhite {
        get {
            return KnownColors.SolidColorBrushFromUint(-332841);
        }
    }
}

不确定你在第二个问题中具体在问什么,但它只会提供与给定程序集直接相关的内容。如果你能澄清这个问题,请尽管说。


1
是的,我知道这些颜色文字来自于Brushes类。我想问的是Intellisense在哪里搜索Brush实例?它是在包含Brush类定义的命名空间内搜索,还是在整个WPF核心程序集中搜索,或者在我的项目中(可能包含对其他程序集的引用)中搜索呢? - weidi

0

Intelisense会显示这个列表,因为这里有这些定义:

xs:attribute name="Fill" type="StringToBrushConverter"/

看一下StringToBrushConverter的定义吧。

name="StringToBrushConverter">
    pattern value="AliceBlue|AntiqueWhite|Aqua|Aquamarine|Azure|Beige|Bisque|Black|BlanchedAlmond|Blue|BlueViolet|Brown|BurlyWood|CadetBlue|Chartreuse|Chocolate|Coral|CornflowerBlue|Cornsilk|Crimson|Cyan|DarkBlue|DarkCyan|DarkGoldenrod|DarkGray|DarkGreen|DarkKhaki|DarkMagenta|DarkOliveGreen|DarkOrange|DarkOrchid|DarkRed|DarkSalmon|DarkSeaGreen|DarkSlateBlue|DarkSlateGray|DarkTurquoise|DarkViolet|DeepPink|DeepSkyBlue|DimGray|DodgerBlue|Firebrick|FloralWhite|ForestGreen|Fuchsia|Gainsboro|GhostWhite|Gold|Goldenrod|Gray|Green|GreenYellow|Honeydew|HotPink|IndianRed|Indigo|Ivory|Khaki|Lavender|LavenderBlush|LawnGreen|LemonChiffon|LightBlue|LightCoral|LightCyan|LightGoldenrodYellow|LightGray|LightGreen|LightPink|LightSalmon|LightSeaGreen|LightSkyBlue|LightSlateGray|LightSteelBlue|LightYellow|Lime|LimeGreen|Linen|Magenta|Maroon|MediumAquamarine|MediumBlue|MediumOrchid|MediumPurple|MediumSeaGreen|MediumSlateBlue|MediumSpringGreen|MediumTurquoise|MediumVioletRed|MidnightBlue|MintCream|MistyRose|Moccasin|NavajoWhite|Navy|OldLace|Olive|OliveDrab|Orange|OrangeRed|Orchid|PaleGoldenrod|PaleGreen|PaleTurquoise|PaleVioletRed|PapayaWhip|PeachPuff|Peru|Pink|Plum|PowderBlue|Purple|Red|RosyBrown|RoyalBlue|SaddleBrown|Salmon|SandyBrown|SeaGreen|SeaShell|Sienna|Silver|SkyBlue|SlateBlue|SlateGray|Snow|SpringGreen|SteelBlue|Tan|Teal|Thistle|Tomato|Transparent|Turquoise|Violet|Wheat|White|WhiteSmoke|Yellow|YellowGreen"/>
    </xs:restriction>
  </xs:simpleType>

所有内容都来自于位于以下位置的WPFe schemma本地化文件:C:\Program Files (x86)\Microsoft Visual Studio 11.0\Xml\Schemas


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接