Open sandboxFocus

Class CommandAttribute

Custom attribute that, when applied on a property of type ICommand named say Foo, automatically create a new command class based on a method named Foo or ExecuteFoo and an optional property or method named CanFoo or CanExecuteFoo.

Namespace: PostSharp.Patterns.Xaml
Assembly: PostSharp.Patterns.Xaml.dll
Syntax
[MulticastAttributeUsage(MulticastTargets.Property)]
[AspectRoleDependency(AspectDependencyAction.Order, AspectDependencyPosition.After, "Threading")]
[AspectRoleDependency(AspectDependencyAction.Order, AspectDependencyPosition.Before, "Validation")]
[AspectRoleDependency(AspectDependencyAction.Order, AspectDependencyPosition.Before, "DataBinding")]
[ComVisible(false)]
[LinesOfCodeAvoided(5)]
[Serializer(typeof(CommandAttribute.Serializer))]
public class CommandAttribute : LocationLevelAspect, ILocationLevelAspect, ILocationLevelAspectBuildSemantics, IAspectBuildSemantics, IValidableAnnotation, IAspectProvider, IAspect, IService
Remarks

Default naming conventions can be overridden by setting the ExecuteMethod, CanExecuteMethod or CanExecuteProperty aspect properties.

When used in a class that has NotifyPropertyChangedAttribute applied, the CanExecuteChanged event is fired whenever a change of the property specified by CanExecuteProperty is detected. The SynchronizationContext of the thread on which the instance of the target class was created is used to fire the event. For example, if the instance is created on a thread where Dispatcher is running, the event will be fired from this thread. If Current was null, the event is fired on the thread on which the notification of property change was received.

Constructors

Name Description
CommandAttribute()

Initializes a new instance of the CommandAttribute class.

CommandAttribute(PortableFormatterConstructorContext)

Properties

Name Description
CanExecuteMethod

Gets or sets the name of the method that is called to determine whether the command can be executed. This method corresponds to the CanExecute(object) method.

CanExecuteProperty

Gets or sets the name of the property that is evaluated to determine whether the command can be executed. This property corresponds to the CanExecute(object) method.

ExecuteMethod

Gets or sets the name of the method that implements the command logic. This method corresponds to the to the Execute(object) method. It is called every time the command is invoked.

Methods

Name Description
CompileTimeInitialize(LocationInfo, AspectInfo)

Method invoked at build time to initialize the instance fields of the current aspect. This method is invoked before any other build-time method.