Ejemplo n.º 1
0
        public static BindingList <T> AttachTo <T>(this BindingList <T> source, BindingList <T> target)
        {
            source.ForEachNewOrExistingItem(target.Add);
            source.ForEachItemDeleted(k => target.Remove(k));

            return(source);
        }
Ejemplo n.º 2
0
        public static BindingList <T> AttachTo <T>(this BindingList <T> e, Func <IAddChild> GetContainer)
            where T : ISupportsContainer
        {
            e.ForEachNewOrExistingItem(
                k =>
            {
                var c = GetContainer();

                if (c != null)
                {
                    k.AttachContainerTo(c);
                }
            }
                );
            e.ForEachItemDeleted(
                k =>
            {
                var c = GetContainer();

                if (c != null)
                {
                    k.OrphanizeContainer();
                }
            }
                );

            return(e);
        }
Ejemplo n.º 3
0
        public static BindingList <T> AttachTo <T>(this BindingList <T> e, IAddChild c)
            where T : ISupportsContainer
        {
            e.ForEachNewOrExistingItem(k => k.AttachContainerTo(c));
            e.ForEachItemDeleted(k => k.OrphanizeContainer());

            return(e);
        }
Ejemplo n.º 4
0
        public static BindingList <T> AttachTo <T, K>(this BindingList <T> e, Func <T, K> selector, IAddChild c)
            where K : ISupportsContainer
        {
            e.ForEachNewOrExistingItem(k => selector(k).AttachContainerTo(c));
            e.ForEachItemDeleted(k => selector(k).OrphanizeContainer());

            return(e);
        }
Ejemplo n.º 5
0
        public static BindingList <T> AttachToFrameworkElement <T>(this BindingList <T> e, IAddChild c)
            where T : FrameworkElement
        {
            e.ForEachNewOrExistingItem(k => k.AttachTo(c));
            e.ForEachItemDeleted(k => k.Orphanize());

            return(e);
        }
Ejemplo n.º 6
0
        public static void MirrorTo <T>(this BindingList <T> source, BindingList <T> mirror)
        {
            // gee, what an overkill :)

            source.ForEachNewOrExistingItem(
                k =>
            {
                if (!mirror.Contains(k))
                {
                    mirror.Add(k);
                }
            }
                );

            source.ForEachItemDeleted(
                k =>
            {
                if (!mirror.Contains(k))
                {
                    mirror.Remove(k);
                }
            }
                );

            mirror.ForEachNewOrExistingItem(
                k =>
            {
                if (!source.Contains(k))
                {
                    source.Add(k);
                }
            }
                );

            mirror.ForEachItemDeleted(
                k =>
            {
                if (!source.Contains(k))
                {
                    source.Remove(k);
                }
            }
                );
        }