3 Xaml Types

The MS-XAML specification defines a XamlType Information Item. Throughout this specification, when a XamlType Information Item is presented, only those values that do not match the default value are listed. The following table defines the default values for a XamlType Information Item.

Property

Default Value

[ is default constructible]

True

[ is nullable]

True

[ text syntax]

Null

[ dictionary key property]

Null

[ name property]

Null

[ xml lang property]

Null

[ trim surrounding whitespace]

False

[ whitespace significant collection]

False

[ is list]

False

[ is dictionary]

False

[ members ]

Empty set

[ content property]

Null

[ allowed types]

Empty set

[ allowed key types]

Empty set

[ is xdata]

False

[ is name scope]

False

[ constructors ]

Empty set

[ return value type]

Null

This specification denotes non-default values for the information set items with rows that begin with the relevant property name in square brackets. Each Xaml Type definition in this specification includes some non-normative information, in order to aid understanding of the type. In order to distinguish them, these rows begin with a name in parentheses.

There is a (usage) row that illustrates the way in which the type is used in XML. If the type cannot contain content, a self-closing tag will be displayed, as the following example shows:

(usage)<DependencyObject />

Some types offer a choice of content. The following example indicates that the three fixed string values shown are acceptable as content:

(usage)OnLastWindowClose | OnMainWindowClose | OnExplicitShutdown

Elements that may contain string content look like the following example. Note that there are typically constraints on which strings are valid. The purpose of the (usage) row is only to provide an approximate indication of content, rather than a formal description.

(usage)<PropertyPath> string </PropertyPath>

Types that can contain an instance of some other type show the name of the type in the usage, as shown in the following example:

(usage)<BeginStoryboard> Storyboard </BeginStoryboard>

Types that can contain multiple instances of some other type indicate this with an asterisk, as shown in the following example:

(usage)<XmlNamespaceMappingCollection> XmlNamespaceMapping*
</XmlNamespaceMappingCollection>

Some types cannot be used directly in a Xaml document. For example, a type might be used as the [value type] of a member, but may be marked as [is default constructible] False, and have no [text syntax]. A Xaml document might contain types that list such a type in their [types assignable to] property, but the type itself cannot be used directly. (This corresponds to the idea of an abstract type in some object-oriented programming systems.) Such types have “None” in their Usage row.

Type definitions also include (description) rows, both for the type and also for the members of that type. This is also non-normative.

The (used by) row is also non-normative. Each (used by) row provides a list of types that use this type in some way. For example, it lists types that use this type as the [value type] of a member. The (used by) row is provided to make it easier to see how a type is used, and it does not translate into a property in the Xaml Schema Information Set.

Some types that are used as the [value type] of a member, but which are not typically used directly as objects have a (types assignable from) row. This is non-normative, and is provided as a guide to the role of the type. Note that this list is necessarily not complete, because the set of types from which a type is assignable is not closed: anyone is free to define a new Xaml vocabulary which defines types that are assignable to types in this specification.

Show: