UserControl
User controls offer a way of building custom controls that works rather differently than everything we've looked at so far. These are intended to offer a similar model to user controls in other UI frameworks such as Windows Forms and ASP.NET. In those technologies, user controls are built with the visual designer in the same way as a window or page would be created, using the same event handling and code-behind mechanisms.
UserControl is a very simple
class that derives from ContentControl and adds very little. It
defines no new public members, and merely makes minor changes to some
default behaviors: it prevents the control from acting as a target for
focus and tab navigation (we typically want the elements inside the user
control to act as focus targets, not the containing user control
itself). The main purpose of UserControl is to signal intent: by deriving
from UserControl, you are indicating
to the development environment how you would like to build and edit the
control. It also offers a clue to developers using your control that it
is unlikely to be lookless—user controls use the same tightly coupled
relationship between markup and code behind as a window or page, so they
do not usually support customization through templates.
Tip
Strictly speaking, user controls have templates—all controls do.
However, the default template contains just a single ContentPresenter, which hosts the UI defined
in your markup. So in practice, a user control supplies its own
visuals.