internal CompositeItemCommandBindingBuilder( [NotNull] SourceItemCommandBinding <TSourceItem, TSourceItemValue> sourceItemBinding, [NotNull] TargetItemBinding <TTargetItem, TTargetItemValue> targetItemBinding, [NotNull] BindingSet <TSourceItem> bindingSet, [NotNull] ICompositeItemBinding <TSourceItem> oldCompositeItemBinding) { _compositeItemBinding = new CompositeItemCommandBinding <TSourceItem, TSourceItemValue, TTargetItem, TTargetItemValue>( sourceItemBinding, targetItemBinding, oldCompositeItemBinding.RequestedBindingMode, oldCompositeItemBinding.ValueConverter); _bindingSet = bindingSet; _bindingSet.Remove(oldCompositeItemBinding); _bindingSet.Add(_compositeItemBinding); }
public void Remove_Invoke_CallsListChanged() { var obj = new object(); var list = new List <object> { obj }; var bindingList = new BindingSet <object>(list); bool calledListChanged = false; bindingList.ListChanged += (object sender, ListChangedEventArgs e) => { calledListChanged = true; Assert.Equal(0, e.NewIndex); Assert.Equal(ListChangedType.ItemDeleted, e.ListChangedType); // The event is raised after the removal. Assert.Equal(0, bindingList.Count); }; bindingList.Remove(obj); Assert.True(calledListChanged); }
public void Remove_INotifyPropertyChangedItems_RemovesPropertyChangedEventHandlers() { var item = new Item(); var bindingList = new BindingSet <Item> { item }; Assert.Equal(1, item.InvocationList.Length); bool calledListChanged = false; bindingList.ListChanged += (object sender, ListChangedEventArgs e) => { calledListChanged = true; Assert.Equal(ListChangedType.ItemDeleted, e.ListChangedType); Assert.Equal(0, e.NewIndex); }; bindingList.Remove(item); Assert.True(calledListChanged); Assert.Empty(bindingList); Assert.Null(item.InvocationList); }