using System.ComponentModel;
public static void Main()
var parent = new ViewModel();
var child = new SubViewModel(parent);
child.PropertyChanged += (sender, e) => Console.WriteLine($"{sender}.{e.PropertyName} has been updated.");
parent.Property = "test";
public class SubViewModel : INotifyPropertyChanged
private ViewModel parent;
public event PropertyChangedEventHandler PropertyChanged;
public SubViewModel(ViewModel parent)
this.parent.PropertyChanged += (sender, e) => PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("SubProperty"));
public string SubProperty
get { return parent.Property; }
public class ViewModel : INotifyPropertyChanged
public event PropertyChangedEventHandler PropertyChanged;
get { return this.property; }
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("Property"));