UIElement
System.Objec
System.Windows.Threading.DispatcherObject
System.Windows.DependencyObject
System.Windows.Media.Visual
System.Windows.UIElementUIElement provides access to
the rendering services implemented by Visual by offering protected wrappers around
the relevant internal features of Visual. UIElement also implements input handling and
WPF's routed event system. It provides the low-level aspects of the
layout system, although this goes only as far as basic sizing and
positioning—FrameworkElement extends
this to provide the full layout system we describe in Chapter 3. Finally, UIElement provides basic animation support,
although FrameworkElement builds on
this to provide the full set of services we describe in Chapter 16.
UIElement may seem like a
strange halfway house, providing an incomplete set of services to be
finished off by FrameworkElement.
This structure arises because WPF is built in layers—there is a split
between the so-called core and
framework parts. The core classes
are defined in PresentationCore.dll
and the framework classes are defined in PresentationFramework.dll. This split is designed to enable developers to use the low-level rendering and animation services of WPF without having to use the full framework. For example, it would technically be possible to write an HTML engine that uses the WPF core for rendering (although no such thing has been built at the time of this writing). That particular example would have no use for framework-level services—HTML ...