Class ObservablePropertyAttribute
- Namespace
- CommunityToolkit.Mvvm.ComponentModel
- Assembly
- CommunityToolkit.Mvvm.dll
An attribute that indicates that a given field should be wrapped by a generated observable property. In order to use this attribute, the containing type has to inherit from ObservableObject, or it must be using ObservableObjectAttribute or INotifyPropertyChangedAttribute. If the containing type also implements the INotifyPropertyChanging (that is, if it either inherits from ObservableObject or is using ObservableObjectAttribute), then the generated code will also invoke OnPropertyChanging(PropertyChangingEventArgs) to signal that event.
This attribute can be used as follows:
partial class MyViewModel : ObservableObject
{
[ObservableProperty]
private string name;
[ObservableProperty]
private bool isEnabled;
}
And with this, code analogous to this will be generated:
partial class MyViewModel
{
public string Name
{
get => name;
set => SetProperty(ref name, value);
}
public bool IsEnabled
{
get => isEnabled;
set => SetProperty(ref isEnabled, value);
}
}
[AttributeUsage(AttributeTargets.Field, AllowMultiple = false, Inherited = false)]
public sealed class ObservablePropertyAttribute : Attribute
- Inheritance
-
ObservablePropertyAttribute
- Inherited Members
Remarks
The generated properties will automatically use the UpperCamelCase
format for their names,
which will be derived from the field names. The generator can also recognize fields using either
the _lowerCamel
or m_lowerCamel
naming scheme. Otherwise, the first character in the
source field name will be converted to uppercase (eg. isEnabled
to IsEnabled
).
Constructors
ObservablePropertyAttribute()
public ObservablePropertyAttribute()