Note

Access to this page requires authorization. You can try signing in or .

Access to this page requires authorization. You can try .

NotifyCanExecuteChangedForAttribute Class

Definition

Namespace:
CommunityToolkit.Mvvm.ComponentModel
Assembly:
CommunityToolkit.Mvvm.dll
Package:
CommunityToolkit.Mvvm v8.4.0
Source:
NotifyCanExecuteChangedForAttribute.cs

Important

Some information relates to prerelease product that may be substantially modified before it’s released. Microsoft makes no warranties, express or implied, with respect to the information provided here.

An attribute that can be used to support IRelayCommand properties in generated properties. When this attribute is used, the generated property setter will also call NotifyCanExecuteChanged() for the properties specified in the attribute data, causing the validation logic for the command to be executed again. This can be useful to keep the code compact when there are one or more dependent commands that should also be notified when a property is updated. If this attribute is used on a property without ObservablePropertyAttribute, it is ignored (just like NotifyPropertyChangedForAttribute).

In order to use this attribute, the target property has to implement the IRelayCommand interface.

This attribute can be used as follows:

partial class MyViewModel : ObservableObject
{
 [ObservableProperty]
 [NotifyCanExecuteChangedFor(nameof(GreetUserCommand))]
 public partial string Name { get; set; }

 public IRelayCommand GreetUserCommand { get; }
}
And with this, code analogous to this will be generated:
partial class MyViewModel
{
 public partial string Name
 {
 get => field;
 set
 {
 if (SetProperty(ref field, value))
 {
 GreetUserCommand.NotifyCanExecuteChanged();
 }
 }
 }
}
[System.AttributeUsage(System.AttributeTargets.Field | System.AttributeTargets.Property, AllowMultiple=true, Inherited=false)]
public sealed class NotifyCanExecuteChangedForAttribute : Attribute
[<System.AttributeUsage(System.AttributeTargets.Field | System.AttributeTargets.Property, AllowMultiple=true, Inherited=false)>]
type NotifyCanExecuteChangedForAttribute = class
 inherit Attribute
Public NotInheritable Class NotifyCanExecuteChangedForAttribute
Inherits Attribute
Inheritance
NotifyCanExecuteChangedForAttribute
Attributes

Remarks

Just like ObservablePropertyAttribute, this attribute can also be used on fields as well.

Constructors

NotifyCanExecuteChangedForAttribute(String, String[])

Initializes a new instance of the NotifyCanExecuteChangedForAttribute class.

NotifyCanExecuteChangedForAttribute(String)

Initializes a new instance of the NotifyCanExecuteChangedForAttribute class.

Properties

CommandNames

Gets the command names to also notify when the annotated property changes.

Applies to