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
.
Implements
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. |