Properties
In Example A-1, we set the Window element's Title property. This property's type was
String. Pure text properties are a
natural fit with XML, because XML is a text-based format. But what about
other property types? Example A-13 uses a
slightly wider range of types.
Example A-13. Nonstring properties
<Rectangle Width="100"
Height="20"
Stroke="Black"
Fill="#80FF40EE" />None of the properties set here is a string. Both Width and Height are of type Double, whereas both Stroke and Fill require a Brush. In order to support diverse property
types, XAML relies on .NET's TypeConverter system. This has been around
since v1.0 of .NET, and it is used in design-time scenarios. A TypeConverter maps between different
representations of a value, most commonly between String and a property's native type.[120]
The Width and Height properties are converted using the
LengthConverter type. (WPF knows to
use this type because the FrameworkElement class's Width and Height properties are marked with a TypeConverterAttribute indicating which
converter to use.) The BrushConverter
class is used for the other two properties, because although they do not
have a TypeConverterAttribute, they
are of type Brush, and the Brush type has a TypeConverterAttribute indicating that
BrushConverter should be used. Example A-14 illustrates how the attribute
was applied in each case.
Example A-14. Specifying a TypeConverter
public class FrameworkElement : UIElement, ... {
...
[TypeConverter(typeof(LengthConverter)) ...