Esempio n. 1
0
        public IActionResult GetD()
        {
            var model = new ModelD();

            model.Names.Add("Some1");

            return(Ok(model));
        }
Esempio n. 2
0
        public void TestItemNestedPropertyChanged()
        {
            var source = new ModelD();
            var target = new TestViewFactory();

            var go = new GameObject("Test");
            var dc = go.AddComponent <DataContext>();

            // create collection binding
            var binding = new CollectionBinding("List", target);

            dc.AddBinding(binding);

            BindingManager.Instance.AddSource(source, "Test");
            BindingManager.Instance.AddDataContext(dc, "Test");

            // add item
            var item = new ModelC();

            item.NestedValue.IntValue = 2;
            source.List.Add(item);

            var itemView        = binding.BindingDictionary[item];
            var itemDataContext = itemView.GetComponent <IDataContext>();

            // add item binding
            var itemTarget  = new ModelA();
            var itemBinding = new Binding("NestedValue.IntValue", itemTarget, "IntValue");

            itemDataContext.AddBinding(itemBinding);

            // check item value
            Assert.AreEqual(2, itemTarget.IntValue);

            // update value
            item.NestedValue.IntValue = 3;
            Assert.AreEqual(2, itemTarget.IntValue);

            // notify
            BindingManager.Instance.NotifyItemPropertyChanged(source, source, source.List, item, item.NestedValue, "IntValue");
            Assert.AreEqual(3, itemTarget.IntValue);

            // update value
            item.NestedValue.IntValue = 4;
            Assert.AreEqual(3, itemTarget.IntValue);

            // notify with null
            BindingManager.Instance.NotifyItemPropertyChanged(source, source, source.List, item, item.NestedValue, null);
            Assert.AreEqual(4, itemTarget.IntValue);

            BindingManager.Instance.Clear();
            target.Clear();
            GameObject.DestroyImmediate(go);
        }