Custom Functionality

Once you have picked a base class, you will need to devise an API for your control. WPF elements usually expose the majority of their functionality through properties, events, and commands, because these get extensive support from the framework and are easily used from XAML. WPF can provide automatic support for routing of events and commands, and its dependency property system provides support for many framework features such as data binding, styling, triggers, and animation. You can, of course, write methods as well, and for certain kinds of functionality, methods are the best approach. (For example, the ListBox has a ScrollIntoView method that ensures that a particular item is visible. This is a useful thing to be able to do from code.) But, you should prefer properties, events, and commands where they are a reasonable fit.

Properties

The .NET type system provides a standard way of defining properties for an object. It prescribes a convention for supplying get and set accessor methods, but the implementation of these, and the way in which the property value is stored, is left up to the developer.[117] In WPF, elements normally use the dependency property system. .NET-style property accessors are typically provided, but these are just wrappers around dependency properties (DPs), added for convenience.

The get and set accessors required to wrap the DP system are trivial—just a single method call for each, as you'll see shortly. In exchange for this minimal amount ...

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.