3

在 WPF 应用程序中,如果我想创建一个矩形,我开始在 XAML 中编写:

<Rectangle Fill=

在我输入最后一个=字符后,Visual Studio 的 Intellisense 会给我这个Fill属性的一堆选项,比如 AliceBlue、AntiqueWhite 等等。我发现这些常量来自 class Brushes,但在我自己的类中定义的常量不会包含在该属性的选项列表中。所以我有两个问题。

  1. 属性Fill是类型Brush。类型Brush是普通类型,不是枚举类型。Intellisense 如何为此类属性寻找选项?
  2. Intellisense 是否可以将在 WPF 核心程序集之外定义的对象视为某个属性的选项?

谢谢

4

2 回答 2

0

智能感知从中提取System.Windows.Media.Brushes的只是几个默认SolidColorBrush值。不过,您可以使用任何画笔类型,例如LinearGradientBrushRadialGradientBrushImageBrush。如果您想定义自己的颜色,您可以使用颜色的十六进制值(例如,#FFFF0000,对于 aRGB 值 255 不透明度、255 红色、0 绿色、0 蓝色),或者您可以在 XAML 中定义资源并使用StaticResourceDynamicResource(如果您打算在运行时更改此值)。

Intellisense 使用反射来查找变量、方法和函数。该颜色列表来自此类,如下所示:

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

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

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

于 2012-05-25T19:01:36.660 回答
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 模式:C:\Program Files (x86)\Microsoft Visual Studio 11.0\Xml\Schemas

于 2013-11-11T20:55:52.380 回答