/// <summary> /// Handles disposal and creation of old and new bindings /// </summary> private static void OnSelectedItemsChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) { if (!(d is ListBox || d is MultiSelector)) { throw new ArgumentException("The property 'SelectedItems' may only be set on ListBox or MultiSelector elements."); } if (e.OldValue != e.NewValue) { var oldBinding = GetSelectedItemBinding(d); oldBinding?.UnBind(); var multiSelectorBinding = new MultiSelectorBinding((Selector)d, (IList)e.NewValue); SetSelectedItemBinding(d, multiSelectorBinding); multiSelectorBinding.Bind(); } }
private static void SetSelectedItemBinding(DependencyObject element, MultiSelectorBinding value) { element.SetValue(SelectedItemBindingProperty, value); }