Exemplo n.º 1
0
        private void DoBind()
        {
            if (!this.isActiveAndEnabled)
            {
                return;
            }

            if (this.Template == null || this.sourceData == null)
            {
                return;
            }

            if (this.obj != null)
            {
                Destroy(this.obj);
            }

            this.obj = GameObject.Instantiate(this.Template, this.transform);
            this.obj.SetActive(true);
            this.objVM = this.obj.GetComponent <VMBehaviour>();

            this.handlers.Clear();
            foreach (KeyValuePair <string, IData> kv in this.sourceData.Fields)
            {
                IData dstData = this.objVM.GetData(kv.Key);
                IData srcData = this.sourceData[kv.Key];
                if (dstData != null) // && srcData.GetType() == dstData.GetType()) // CopyFrom 本身做了数据检查
                {
                    DataChangedHandler handler = delegate(IData src)
                    {
                        dstData.CopyFrom(src);
                    };
                    handler.Invoke(srcData);
                    srcData.AddValueChangedListener(handler);
                    this.handlers[srcData] = handler;
                }
            }
        }
Exemplo n.º 2
0
        private void OnUpdateElement(ChangeType type, string elementName, object value)
        {
            DataChangedHandler handler = UpdateElement;

            handler?.Invoke(this, new DataChangedArgs(type, elementName, value));
        }