public Main(RouterData Data) { this.Data = Data; InitializeComponent(); RoutingList.Items.Clear(); foreach (var Item in Data.StaticRoutes) { RoutingList.Items.Add(CreateLVIFromStaticRoutingRule(Item)); } RoutingList.Refresh(); Data.StaticRoutes.CollectionChanged += new System.Collections.Specialized.NotifyCollectionChangedEventHandler( delegate(object Sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs EventArgs) { if (EventArgs.Action == System.Collections.Specialized.NotifyCollectionChangedAction.Add) { foreach (var ItemObj in EventArgs.NewItems) { StaticRoutingData Item = (StaticRoutingData)ItemObj; RoutingList.Items.Add(CreateLVIFromStaticRoutingRule(Item)); } } else if (EventArgs.Action == System.Collections.Specialized.NotifyCollectionChangedAction.Remove) { foreach (var ItemObj in EventArgs.OldItems) { StaticRoutingData Item = (StaticRoutingData)ItemObj; foreach (var ListItemObj in RoutingList.Items) { var ListViewItem = ListItemObj as ListViewItem; if (ListViewItem.Tag.Equals(Item)) { RoutingList.Items.Remove(ListViewItem); break; } } } } RefreshDiff(); } ); }