github仓库
稳定版本仓库:https://github.com/Avalon712/UniVue
开发版本仓库:https://github.com/Avalon712/UniVue-Develop
UniVue扩展框架-UniVue源生成器仓库:https://github.com/Avalon712/UniVue-SourceGenerator
SuperGrid组件的实现原理与使用
SuperGrid组件是对LoopGrid组件的功能增强,可以实现背包物品的拖拽、放置,同时通过将多个SuperGrid组件加入一个GridGroup组可以实现跨背包物品的拖拽放置。
SuperGrid组件的原理:我们从拖拽放置的本质出发,无非就是想要将数据能够通过鼠标的方式进行操作,因此SuperGrid组件的底层实现原理其实就对数据指向操作,而你看到的只是数据在视图层面上的表现,每次对数据执行下面几个操作:
- 两个物品的交换,本质就是对两个视图绑定的模型数据进行一次交换操作然后执行一次视图刷新,从结果上来看你看见的就是两个物品真实的进行了交换;
- 将一个物品放置到一个空位,本质上讲一个数据在拖拽的物品的身上进行解绑,然后绑定到空位的那个视图上,再进行一次刷新;
说明:目前这个SuperGrid组件的功能只能算一个预览版,正式版本会在UniVue的下一个版本发布,今天UniVue第一个版本的功能已经做完,将会正式发布第一个版本。下一个版本将会提高更灵活的拖拽放置功能,比如一些物品合成类的功能时,对应的物品放置的位置可能就是不是一个格子视图,为此在下个版本会提高功能更强大的功能。
上面的两个格子视图通过加入同一个GridGroup可以实现两个物品的跨背包拖拽放置。如果你需要实现类似背包整理的功能,只需要调用一次Refresh(true),指定为强制刷新即可,这些功能都是与LoopGrid组件一致的。