Fields are not part of the binding source spec
common language runtime (CLR) objects
You can bind to public properties,
sub-properties, as well as indexers,
of any common language runtime (CLR)
object. The binding engine uses CLR
reflection to get the values of the
properties. Alternatively, objects
that implement ICustomTypeDescriptor
or have a registered
TypeDescriptionProvider also work with
the binding engine.
For more information about how to
implement a class that can serve as a
binding source, see Implementing a
Class for the Binding Source later in
this topic.
dynamic objects
You can bind to available properties
and indexers of an object that
implements the
IDynamicMetaObjectProvider interface.
If you can access the member in code,
you can bind to it. For example, if a
dynamic object enables you to access a
member in code via
someObjet.AProperty, you can bind to
it by setting the binding path to
AProperty.
ADO.NET objects
You can bind to ADO.NET objects, such
as DataTable. The ADO.NET DataView
implements the IBindingList interface,
which provides change notifications
that the binding engine listens for.
XML objects
You can bind to and run XPath queries
on an XmlNode, XmlDocument, or
XmlElement. A convenient way to access
XML data that is the binding source in
markup is to use an XmlDataProvider
object. For more information, see How
to: Bind to XML Data Using an
XMLDataProvider and XPath Queries.
You can also bind to an XElement or
XDocument, or bind to the results of
queries run on objects of these types
by using LINQ to XML. A convenient way
to use LINQ to XML to access XML data
that is the binding source in markup
is to use an ObjectDataProvider
object. For more information, see How
to: Bind to XDocument, XElement, or
LINQ for XML Query Results.
DependencyObject objects
You can bind to dependency properties
of any DependencyObject. For an
example, see How to: Bind the
Properties of Two Controls.