FrameworkElement
System.Object
System.Windows.Threading.DispatcherObject
System.Windows.DependencyObject
System.Windows.Media.Visual
System.Windows.UIElement
System.Windows.FrameworkElementFrameworkElement is the base
class of the majority of visible elements in WPF. It derives from
UIElement, so types that derive from
FrameworkElement are able to render
their own appearance and respond to user input. FrameworkElement adds data binding, styling,
and resource handling, and it builds the full set of layout and
animation services on top of the primitive services provided by UIElement.
FrameworkElement also provides
a great deal of the infrastructure for data templates and control
templates, although you must use more specialized classes to exploit
these features. Only a Control (or a
type derived from Control) can have a
control template. You can use data templates either from a ContentPresenter or from certain control
types.[130]
FrameworkElement is arguably
WPF's nearest equivalent to the Windows Forms Control class. WPF has a Control class too (which we describe later),
but its role is more specialized.
Tip
Types that derive directly from FrameworkElement are typically all-code
affairs. Although you could create a XAML file for a FrameworkElement with a corresponding
code-behind file, you can't use this to construct the appearance of
the element. This is because adding child elements at this level
requires code—you need to override the GetVisualChild method and the VisualChildrenCount ...