Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>You could also considering using <a href="http://msdn.microsoft.com/en-us/library/ms668604.aspx" rel="nofollow noreferrer">System.Collections.ObjectModel.ObservableCollection</a> and wiring up it's <a href="http://msdn.microsoft.com/en-us/library/ms653375.aspx" rel="nofollow noreferrer">CollectionChanged</a> event. It could look something like this.</p> <pre><code> ObservableCollection&lt;EmployeeAdapter&gt; observableEmployees = new ObservableCollection&lt;EmployeeAdapter&gt;(); foreach (Employee emp in employees) { observableEmployees.Add(new EmployeeAdapter(emp)); } observableEmployees.CollectionChanged += (object sender, NotifyCollectionChangedEventArgs e) =&gt; { ObservableCollection&lt;EmployeeAdapter&gt; views = sender as ObservableCollection&lt;EmployeeAdapter&gt;; if (views == null) return; switch (e.Action) { case NotifyCollectionChangedAction.Add: foreach (EmployeeAdapter view in e.NewItems) { if (!employees.Contains(view.Employee)) employees.Add(view.Employee); } break; case NotifyCollectionChangedAction.Remove: foreach (EmployeeAdapter view in e.OldItems) { if (employees.Contains(view.Employee)) employees.Remove(view.Employee); } break; default: break; } }; </code></pre> <p>Code assumes the following using statements.</p> <pre><code>using System.Collections.ObjectModel; using System.Collections.Specialized; </code></pre> <p>If you need the <a href="http://msdn.microsoft.com/en-us/library/5y536ey6.aspx" rel="nofollow noreferrer">IList</a> interface you could also use <a href="http://msdn.microsoft.com/en-us/library/ms132679.aspx" rel="nofollow noreferrer">System.ComponentModel.BindingList</a> and wire up it's <a href="http://msdn.microsoft.com/en-us/library/ms132742.aspx" rel="nofollow noreferrer">ListChanged</a> event. It could look like this.</p> <pre><code>BindingList&lt;EmployeeAdapter&gt; empViews = new BindingList&lt;EmployeeAdapter&gt;(); foreach (Employee emp in employees) { empViews.Add(new EmployeeAdapter(emp)); } empViews.ListChanged += (object sender, ListChangedEventArgs e) =&gt; { BindingList&lt;EmployeeAdapter&gt; employeeAdapters = sender as BindingList&lt;EmployeeAdapter&gt;; if (employeeAdapters == null) return; switch (e.ListChangedType) { case ListChangedType.ItemAdded: EmployeeAdapter added = employeeAdapters[e.NewIndex]; if (!employees.Contains(added.Employee)) employees.Add(added.Employee); break; case ListChangedType.ItemDeleted: EmployeeAdapter deleted = employeeAdapters[e.OldIndex]; if (employees.Contains(deleted.Employee)) employees.Remove(deleted.Employee); break; default: break; } }; </code></pre> <p>Code assumes the following using statement.</p> <pre><code>using System.ComponentModel; </code></pre>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. VO
      singulars
      1. This table or related slice is empty.
    2. VO
      singulars
      1. This table or related slice is empty.
    1. This table or related slice is empty.
 

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