In this chapter, we've investigated the rich inheritance hierarchy of the built-in WPF controls, determining which abilities come from which base classes, and have seen how each control is laid out by their containing panels. We've examined the differences between the different panels and understand that some work better in certain conditions than others.
We've also uncovered the mysteries of the ContentControl and ItemsControl elements and now have a good understanding of ContentPresenter and ItemsPresenter objects. We moved on to discover a wide variety of ways for us to customize the built-in controls. Finally, we considered how best to make our own controls.
In the next chapter, we will further investigate the built-in controls, paying particular attention to the polymorphic ability of derived classes to override base class methods. We will introduce a number of examples that each highlight certain problems, and demonstrate how to overcome them each in turn...