一、collection

  如果设计如下页面

  

  页面模型如下

  

using UnityEngine;
using System.Collections;
using System.Collections.Generic; using MyUtils; public class Product : EZData.Context
{
#region Property Name
#endregion #region Property Price
#endregion #region Property Model
#endregion #region Property PicUrl
#endregion #region Property Pic //Texture2D
#endregion public void SetTexture2D(Texture2D tar) {
Pic = tar;
} //set current product
public void SetCurrentProduct() {
Messenger.Broadcast<Product>(EventSignal.Select_Current_Product.ToString(), this);
}
} public class CommodityPage<T> : EZData.Context
where T : EZData.Context
{
//列的集合
#region Collection Page
#endregion
} public class Category<T> : EZData.Context
where T : EZData.Context
{
//row list
#region Collection Table
#endregion #region Property Name
#endregion public void LoadTable(T[] Array, int PageNum)
{
}
} public class CategroyUi : EZData.Context
{
#region Collection CategoryList
#endregion #region Property NowSelectProduct
#endregion public ICategory_Product_Dao Ca_Pr_dao; public CategroyUi(ICategory_Product_Dao Ca_Pr_dao)
{
this.Ca_Pr_dao = Ca_Pr_dao; List<CategoryBean> mycategorylist = Ca_Pr_dao.getAllCategory(); foreach (CategoryBean item in mycategorylist)
{
CategoryList.Add(new Category<Product>() { Name = item.Name });
} for (int i = ; i < mycategorylist.Count; i++)
{
List<ProductBean> collection = Ca_Pr_dao.getProductListByCategoryId(mycategorylist[i].Id); Product[] Product_collection = GetArray(collection); CategoryList.GetItem(i).LoadTable(Product_collection, );
} //使用ngui master path
//path = CategoryList.SelectedItem.Table.SelectedItem.Page.SelectedItem
//这样形式是不可以的,只有CategoryList.SelectedItem 是可以使用的 //这里千万不要这么引用
//比如这里引用第一行第一个的数据
//之后你改为第一行第二个的数据
//NowSelectProduct 引用的是第一行第一个 那么第一行第一个的数据也改为第一行第二个
//NowSelectProduct = CategoryList.GetItem(0).Table.GetItem(0).Page.GetItem(0); //新new 一个 不要引用相同的
//一定要对其最开始就进行初始化 之后改变这个类的属性 不能改变这个类的引用
Product tmp = CategoryList.GetItem().Table.GetItem().Page.GetItem();
NowSelectProduct = new Product() { Name = tmp.Name, Price = tmp.Price, Model = tmp.Model, PicUrl = tmp.PicUrl };
Ca_Pr_dao.GetPicureByProductNameOrUrl(NowSelectProduct.Name, NowSelectProduct.PicUrl, NowSelectProduct.SetTexture2D); //监听当前选择的改变
Messenger.AddListener<Product>(
EventSignal.Select_Current_Product.ToString(), SelectCurrentProduct);
} public void SelectCurrentProduct(Product cur)
{
//这里不能改引用 只能赋值
NowSelectProduct.Name = cur.Name;
NowSelectProduct.Price = cur.Price;
NowSelectProduct.Model = cur.Model;
NowSelectProduct.PicUrl = cur.PicUrl;
UnityEngine.Debug.Log("SelectCurrentProduct" + NowSelectProduct.Name);
Ca_Pr_dao.GetPicureByProductNameOrUrl(NowSelectProduct.Name, NowSelectProduct.PicUrl, NowSelectProduct.SetTexture2D);
} #region 功能函数
Product[] GetArray(List<ProductBean> collection)
{
int length = collection.Count; Product[] result = new Product[length];
for (int i = ; i < length; i++)
{
ProductBean tmp = collection[i];
result[i] = new Product() { Name = tmp.Name, Price = tmp.Price, Model = tmp.Size, PicUrl = tmp.PicUrl};
Ca_Pr_dao.GetPicureByProductNameOrUrl(result[i].Name, result[i].PicUrl, result[i].SetTexture2D);
}
return result;
}
#endregion
} public class CategoryViewModel : MonoBehaviour
{
public NguiRootContext View; public CategroyUi Context; public void Init(NguiRootContext View)
{
this.View = View;
Context = new CategroyUi(new CategoryModel());
View.SetContext(Context);
}
}

 

2、关于NguiTextBinding

  拖一个输入框如下:

  Control - Simple Input Field

    -》 Label

  附加脚本如下:

  Control - Simple Input Field

  

  Label

  

  

  ViewModel 对应如下:
  

    #region Property MessageLeave
private readonly EZData.Property<string> _privateMessageLeaveProperty
= new EZData.Property<string>();
public EZData.Property<string> MessageLeaveProperty
{ get { return _privateMessageLeaveProperty; } }
public string MessageLeave
{
get { return MessageLeaveProperty.GetValue(); }
set { MessageLeaveProperty.SetValue(value); }
}
#endregion public void SendMessage() {
Debuger.Log("LeaveMessage is :"+ MessageLeave);
}

  void SendMessage() 绑定一个按钮,MessageLeave 绑定刚才的label,按钮点击,结果如下

  

  

  但如果只保留label:

  附加脚本如下:

  

  同样的ViewModel,结果如下

  

  可以得到绑定,无语了,这个BUG。还有我建议Text CommitBind 能不用就不用。

三、NguiTextureBinding

  这里要修改一下,如果采用material的话,那么同一个材质的图片都是一样的了。

  

NData BUG 记录的更多相关文章

  1. 【bug记录】OS Lab3 踩坑记

    OS Lab3 踩坑记 Lab3在之前Lab2的基础上,增加了进程建立.调度和中断异常处理.其中测试包括进程建立以及进程调度部分. 由于是第一次做bug记录,而且是调试完bug后再做的记录,所以导致记 ...

  2. 微信小程序bug记录与解决

    微信小程序bug记录 textarea textarea在模拟器上没有padding,可是在真机上会自带padding,而且在外部改不了,并且在安卓和IOS上padding还不一样 第一张图是在开发工 ...

  3. BUG 记录:移位运算与扩展欧几里得算法

    BUG 记录:移位运算与扩展欧几里得算法 起因 上个月就开始打算用C++写一个ECC的轮子(为什么?折磨自己呗!),奈何自己水平有点差,拖到现在才算写完底层的大数运算.在实现欧几里得算法的时候,我开始 ...

  4. ArcGIS 10.1 BUG记录

    声明:笔者使用ARCGIS 10.1 XXX版,YYY版可能没有此处描写的问题 1. 关于注册数据库 发布启用FA的服务,需要为数据库进行ArcGIS Server注册,若通过ArcMap执行注册,会 ...

  5. 前端bug记录---不定时更新

    在项目的开发中难免遇到各种各样的bug,我觉得还是有必要记录一下的,方便日后查询. safari window resize  为满足日常轮播需求,做一个符合当前业务的轮播插件,其中需要考虑windo ...

  6. bug记录-setTimeout、setInterval之IOS7

    本篇文章主要讲查找并分析bug的思路,相关的函数不是本文的重点. 众所周知,setTimeout和setInterval是用来做延迟调用以及周期性调用的方法,他们支持的参数都差不多. setTimeo ...

  7. CDH:5.14.0 中 Hive BUG记录

    CDH5.14.0使用的HIVE版本: 自建表log: +----------------------------------------------------+--+ | createtab_st ...

  8. 【bug记录】OS Lab4 踩坑记

    OS Lab4 踩坑记 Lab4在之前Lab3的基础上,增加了系统调用,难度增加了很多.而且加上注释不详细,开玩笑的指导书,自己做起来困难较大.也遇到了大大小小的bug,调试了一整天. 本文记录笔者在 ...

  9. 前端bug记录

    记录一下前端入门时期遇到的一些bug. 1.同步.异步问题 背景:Javascript语言的执行环境是单线程.即一次只能完成一个任务.若有多个任务则需排队逐个执行——前一个任务完成,再执行后一个任务. ...

随机推荐

  1. PowerDesigner 工具面板 association,inheritance,association link 不可用 解决方法

    PowerDesigner 画E-R 图,关联,继承及关联实体连接不可用. 如图: 解决方法: tools->modeloptions->Notation 改为"E/R+Meri ...

  2. JavaScript之字符串

    一.声明方式 1. 直接赋值 var str = 'hello javascript'; 2. 构造函数 var str2 = new String('hello world'); 这两种有什么区别呢 ...

  3. Static的使用

    (一) 当它用于函数定义时,或用于代码块之外的变量声明时,static关键字用于修饰修改标识符的连接属性,从external改为internal,但是标识符的存储类型和作用域不受影响.用这种方式声明的 ...

  4. .NET中变量的类型问题

    1.JAVA和C# Byte的不同. java里一个byte取值范围是-128~127, 而C#里一个byte是0~255. 首位不同. 但是底层I/O存储的数据是一样的, 比如, 十进制的100, ...

  5. C++与Java多态的区别

    多态是指用父指针指向不同子类对象时,调用其共有的函数,不同的子类会有不同的行为.虽然C++和Java都具有多态机制,但是他们的实现不同,使用时的效果也会略有不同. 在C++中 普通函数调用:具体调用哪 ...

  6. !!! FAILED BINDER TRANSACTION !!! TransactionTooLargeException

    - ::): !!! FAILED BINDER TRANSACTION !!! xxxRecorder 运行40多分钟,崩溃,捕获日志 03-12 14:50:12.353: E/JavaBinde ...

  7. xml操作

    一.LINQ to XML 编程基础 1.LINQ to XML类 System.Xml.Linq命名空间含有19个类,下表列出了它们的名称及其描述: 类 描述 XAttribute 表示一个 XML ...

  8. linux的7种运行级别

    Linux有7个运行级别(runlevel)运行级别0:系统停机状态,系统默认运行级别不能设为0,否则不能正常启动运行级别1:单用户工作状态,root权限,用于系统维护,禁止远程登陆运行级别2:多用户 ...

  9. 扩展 delphi 线程 使之传递参数.

    新delphi的线程TThread有了CreateAnonymousThread方法,如果再为它加一个可传递的参数不就更好了吗?代码如下: TAnonymousThreadX<T> = c ...

  10. Git客户端Windows下的使用

    1,必须安装的软件 msysgit  http://code.google.com/p/msysgit/downloads/list?q=full+installer+official+git (ms ...