Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    text
    copied!<p>You can just have the parent VM connect to the PropertyChanged event on the child VMs. It's kind of a PITA to keep track of the children who have been added/removed etcetera so you might instead consider storing your child VMs in my <code>ItemObservableCollection</code>:</p> <pre><code>public sealed class ItemObservableCollection&lt;T&gt; : ObservableCollection&lt;T&gt; where T : INotifyPropertyChanged { public event EventHandler&lt;ItemPropertyChangedEventArgs&lt;T&gt;&gt; ItemPropertyChanged; protected override void InsertItem(int index, T item) { base.InsertItem(index, item); item.PropertyChanged += item_PropertyChanged; } protected override void RemoveItem(int index) { var item= this[index]; base.RemoveItem(index); item.PropertyChanged -= item_PropertyChanged; } protected override void ClearItems() { foreach (var item in this) { item.PropertyChanged -= item_PropertyChanged; } base.ClearItems(); } protected override void SetItem(int index, T item) { var oldItem = this[index]; oldItem.PropertyChanged -= item_PropertyChanged; base.SetItem(index, item); item.PropertyChanged -= item_PropertyChanged; } private void item_PropertyChanged(object sender, PropertyChangedEventArgs e) { OnItemPropertyChanged((T)sender, e.PropertyName); } private void OnItemPropertyChanged(T item, string propertyName) { ItemPropertyChanged.Raise(this, new ItemPropertyChangedEventArgs&lt;T&gt;(item, propertyName)); } } </code></pre> <p>Then your parent VM can just listen for all changes to child items with:</p> <pre><code>_formFields.ItemPropertyChanged += (s, e) =&gt; Foo(); </code></pre>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload