Normally in Caliburn.Micro and MVVM in general, you would have non-static properties that would be updated and notified like this:
private string _name;
public string Name
{
get { return _name; }
set
{
_name = value;
NotifyOfPropertyChange(() => Name);
}
}
However, if I had a static property, for example, if I wanted a property that could be accessed by another namespace, I would need to implement my own event handler as the default NotifyOfPropertyChange doesn’t operate on static properties.
This is the new EventHandler that I implemented:
public static event EventHandler<PropertyChangedEventArgs> StaticPropertyChanged;
private static void NotifyStaticPropertyChanged(string propertyName)
{
StaticPropertyChanged?.Invoke(null, new PropertyChangedEventArgs(propertyName));
}
Finally, in order to use it. I would use this instead of the first example for non-static properties:
private string _name;
public string Name
{
get { return _name; }
set
{
_name = value;
NotifyStaticPropertyChanged(() => Name);
}
}
I hope this helps someone. Enjoy!