public void OldListToOldList()
        {
            var list = new ArrayList()
            {
                0, 1, 2
            };
            var target = new ArrayList();

            CreateAndCheckBinding(() => CollectionBindingHelper.Bind((int i) => i, target, i => i, list));
            Assert.AreEqual(1, target[1]);
        }
        public void OldListToNewList()
        {
            var list = new ArrayList()
            {
                0, 1, 2
            };
            ObservableCollection <int> targetCollection = new ObservableCollection <int>();

            CreateAndCheckBinding(() => CollectionBindingHelper.Bind(targetCollection, i => i, i => i, list));
            Assert.AreEqual(1, targetCollection[1]);
        }
        public void NewListToOldList()
        {
            var list = new ObservableCollection <int>()
            {
                0, 1, 2
            };
            var target = new ArrayList();

            CreateAndCheckBinding(() => CollectionBindingHelper.Bind(i => i, target, list, i => i));
            Assert.AreEqual(1, target[1]);
        }
        public void SyncWithSimpleList()
        {
            List <int> list = new List <int>()
            {
                0, 1, 2
            };
            ObservableCollection <int> targetCollection = new ObservableCollection <int>();

            CreateAndCheckBinding(() => CollectionBindingHelper.Bind(targetCollection, i => i, list, i => i));
            AssertHelper.AssertEnumerablesAreEqual(list, targetCollection);
        }
        public void MoveItemForward_CompareCollections()
        {
            ObservableCollection <int> collection1 = new ObservableCollection <int>()
            {
                0, 1, 2, 3, 4, 5
            };
            ObservableCollection <int> collection2 = new ObservableCollection <int>();

            CreateAndCheckBinding(() => CollectionBindingHelper.Bind(collection2, x => x, collection1, x => x));
            AssertHelper.AssertEnumerablesAreEqual(collection1, collection2);
            collection1.Move(1, 3);
            AssertHelper.AssertEnumerablesAreEqual(collection1, collection2);
        }
        public void OldListToOldList_WithGC()
        {
            var list = new MyTestCollection();

            list.Add(0);
            list.Add(1);
            var target  = new ArrayList();
            var binding = CollectionBindingHelper.Bind((int i) => i, target, i => i, list);

            Assert.AreEqual(1, target[1]);
            GC.KeepAlive(binding);
            GC.KeepAlive(list);
            GC.KeepAlive(target);
        }
        public void AddItemsReverse()
        {
            ObservableCollection <int>    collection1 = new ObservableCollection <int>();
            ObservableCollection <string> collection2 = new ObservableCollection <string>();

            CreateAndCheckBinding(() => CollectionBindingHelper.Bind(collection2, a => a.ToString(), collection1, s => int.Parse(s), true));
            collection1.Add(8);
            Assert.AreEqual(collection1[0].ToString(), collection2[0]);
            collection2.Add("555");
            collection2.Add("56");
            Assert.AreEqual(collection1[0], int.Parse(collection2[2]));
            Assert.AreEqual(collection1[1], int.Parse(collection2[1]));
            Assert.AreEqual(collection1[2], int.Parse(collection2[0]));
            Assert.AreEqual(collection1.Count, 3);
            Assert.AreEqual(collection2.Count, 3);
        }
        public void TaskbarButtonInfoCollectionBehavior()
        {
            ObservableCollection <int> collection1 = new ObservableCollection <int>();
            MyTestCollection <string>  collection2 = new MyTestCollection <string>();

            collection2.Add("434");
            IDisposable stopBinding = CollectionBindingHelper.Bind(collection1, s => int.Parse(s), collection2, a => a.ToString());

            collection2.OnCollectionChanged(new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Add, collection2[0], 0));
            AssertHelper.AssertEnumerablesAreEqual(new int[] { 434 }, collection1);
            collection1.Add(100);
            stopBinding.Dispose();
            collection2.Remove("100");
            CreateAndCheckBinding(() => CollectionBindingHelper.Bind(collection1, s => int.Parse(s), collection2, a => a.ToString()));
            collection2.OnCollectionChanged(new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Remove, "100", 0));
            AssertHelper.AssertEnumerablesAreEqual(new int[] { 434 }, collection1);
        }
        public void ClearItems()
        {
            ObservableCollection <int>    collection1 = new ObservableCollection <int>();
            ObservableCollection <string> collection2 = new ObservableCollection <string>();

            CreateAndCheckBinding(() => CollectionBindingHelper.Bind(collection2, a => a.ToString(), collection1, s => int.Parse(s)));
            collection1.Add(8);
            collection1.Add(60);
            collection1.Clear();
            Assert.AreEqual(collection1.Count, 0);
            Assert.AreEqual(collection2.Count, 0);
            collection2.Add("50");
            collection2.Add("56");
            collection2.Clear();
            Assert.AreEqual(collection1.Count, 0);
            Assert.AreEqual(collection2.Count, 0);
        }
        public void RemoveItemsReverse()
        {
            ObservableCollection <string> collection1 = new ObservableCollection <string>();
            ObservableCollection <int>    collection2 = new ObservableCollection <int>();

            CreateAndCheckBinding(() => CollectionBindingHelper.Bind(collection2, s => int.Parse(s), collection1, a => a.ToString(), true));
            collection1.Add("100");
            collection1.Add("101");
            collection1.Add("102");
            collection1.Add("103");
            collection1.RemoveAt(1);
            Assert.AreEqual(int.Parse(collection1[0]), collection2[2]);
            Assert.AreEqual(int.Parse(collection1[1]), collection2[1]);
            Assert.AreEqual(int.Parse(collection1[2]), collection2[0]);
            Assert.AreEqual(collection1.Count, 3);
            Assert.AreEqual(collection2.Count, 3);
            collection2.RemoveAt(2);
            Assert.AreEqual(int.Parse(collection1[0]), collection2[1]);
            Assert.AreEqual(int.Parse(collection1[1]), collection2[0]);
            Assert.AreEqual(collection1.Count, 2);
            Assert.AreEqual(collection2.Count, 2);
        }
        public void ReplaceItemsReverse()
        {
            ObservableCollection <int>    collection1 = new ObservableCollection <int>();
            ObservableCollection <string> collection2 = new ObservableCollection <string>();

            CreateAndCheckBinding(() => CollectionBindingHelper.Bind(collection2, a => a.ToString(), collection1, s => int.Parse(s), true));
            collection1.Add(-100);
            collection1.Add(254);
            collection1.Add(1);
            collection1.Add(1000);
            collection1[1] = collection1[2];
            for (int i = 0; i < collection1.Count; i++)
            {
                Assert.AreEqual(collection1[i], int.Parse(collection2[collection2.Count - 1 - i]));
            }
            collection2[3] = collection2[2];
            for (int i = 0; i < collection2.Count; i++)
            {
                Assert.AreEqual(collection1[i], int.Parse(collection2[collection2.Count - 1 - i]));
            }
            Assert.AreEqual(collection1.Count, 4);
            Assert.AreEqual(collection2.Count, 4);
        }
        public void MoveItemsReverse()
        {
            ObservableCollection <string> collection1 = new ObservableCollection <string>();
            ObservableCollection <int>    collection2 = new ObservableCollection <int>();

            CreateAndCheckBinding(() => CollectionBindingHelper.Bind(collection2, s => int.Parse(s), collection1, a => a.ToString(), true));
            collection1.Add("560");
            collection1.Add("200");
            collection1.Add("-300");
            collection1.Add("-1");
            collection1.Move(0, 2);
            for (int i = 0; i < collection1.Count; i++)
            {
                Assert.AreEqual(int.Parse(collection1[i]), collection2[collection2.Count - 1 - i]);
            }
            collection2.Move(3, 0);
            for (int i = 0; i < collection2.Count; i++)
            {
                Assert.AreEqual(int.Parse(collection1[i]), collection2[collection2.Count - 1 - i]);
            }
            Assert.AreEqual(collection1.Count, 4);
            Assert.AreEqual(collection2.Count, 4);
        }
        public void UnBinding()
        {
            ObservableCollection <int>    collection1 = new ObservableCollection <int>();
            ObservableCollection <string> collection2 = new ObservableCollection <string>();
            IDisposable stopBinding = CollectionBindingHelper.Bind(collection2, a => a.ToString(), collection1, s => int.Parse(s));

            collection1.Add(-100);
            collection1.Add(254);
            collection1.Add(1);
            Assert.AreEqual(collection1[0], int.Parse(collection2[0]));
            Assert.AreEqual(collection1[1], int.Parse(collection2[1]));
            Assert.AreEqual(collection1[2], int.Parse(collection2[2]));
            Assert.AreEqual(collection1.Count, 3);
            Assert.AreEqual(collection2.Count, 3);
            stopBinding.Dispose();
            collection1[1] = 10;
            collection2.RemoveAt(2);
            Assert.AreEqual(collection1[0], int.Parse(collection2[0]));
            Assert.AreEqual(collection1[1], 10);
            Assert.AreEqual(collection2[1], "254");
            Assert.AreEqual(collection1[2], 1);
            Assert.AreEqual(collection1.Count, 3);
            Assert.AreEqual(collection2.Count, 2);
        }
示例#14
0
 public static IDisposable TwoWayBind <TSource, TTarget>(IList <TTarget> target, IList <TSource> source, Func <TSource, TTarget> itemConverter, Func <TTarget, TSource> itemBackConverter)
 {
     return(CollectionBindingHelper.Bind(target, itemConverter, source, itemBackConverter));
 }