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!