Freezable

System.Object
    System.Windows.Threading.DispatcherObject
        System.Windows.DependencyObject
            System.Windows.Freezable

Many types in WPF describe features of the user interface rather than being UI elements in their own right. For example, the various brush types described in Chapter 13 describe how a particular UI feature should be colored; geometries describe shapes of graphical elements. Most of these descriptive classes derive from the common Freezable base class. You would not normally derive your own types from Freezable; it is an important class in the WPF class hierarchy because so many important types derive from it.

One of the most important characteristics of a freezable object is that you can use it in multiple places. Example D-1 contains a single description of an ellipse shape, which is shared by three UI elements.

Example D-1. Freezables and elements

<StackPanel Orientation="Horizontal">
  <StackPanel.Resources>
    <EllipseGeometry x:Key="pathDescription"
                     RadiusX="100" RadiusY="50" Center="100,50" />
  </StackPanel.Resources>

  <Path Data="{StaticResource pathDescription}" Fill="Green" />
  <Path Data="{StaticResource pathDescription}" Fill="Cyan" />
  <Path Data="{StaticResource pathDescription}" Fill="Black" />

</StackPanel>

As you can see from Figure D-2, this example has three distinct elements—the three ellipses correspond to the three Path elements. This highlights the fact that Path is more than just a description of a shape. The identity of a Path object is significant—each ...

Get Programming WPF, 2nd Edition now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.