This abstract class is a RoutedCommand which allows its subclasses to provide default logic for determining if they can execute and how to execute. To enable the default logic to be used, set the IsCommandSink attached property to true on the root element of the element tree which uses one or more SmartRoutedCommand subclasses.