public IActionResult GetD() { var model = new ModelD(); model.Names.Add("Some1"); return(Ok(model)); }
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); }