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.