private static void OnSynchronizedSelectedItemsChanged(
            DependencyObject dependencyObject,
            DependencyPropertyChangedEventArgs e)
        {
            if (e.OldValue != null)
            {
                MultiSelectorBehaviours.GetSynchronizationManager(dependencyObject).StopSynchronizing();
                MultiSelectorBehaviours.SetSynchronizationManager(dependencyObject, (MultiSelectorBehaviours.SynchronizationManager)null);
            }
            IList    newValue = e.NewValue as IList;
            Selector selector = dependencyObject as Selector;

            if (newValue == null || selector == null)
            {
                return;
            }
            MultiSelectorBehaviours.SynchronizationManager synchronizationManager = MultiSelectorBehaviours.GetSynchronizationManager(dependencyObject);
            if (synchronizationManager == null)
            {
                synchronizationManager = new MultiSelectorBehaviours.SynchronizationManager(selector);
                MultiSelectorBehaviours.SetSynchronizationManager(dependencyObject, synchronizationManager);
            }
            synchronizationManager.StartSynchronizingList();
        }
 private static void SetSynchronizationManager(
     DependencyObject dependencyObject,
     MultiSelectorBehaviours.SynchronizationManager value)
 {
     dependencyObject.SetValue(MultiSelectorBehaviours.SynchronizationManagerProperty, (object)value);
 }