动态载入数据的无刷新TreeView控件(2)
昨天说了一下TreeView控件的数据结构和UI表现的设计。为了让一个TreeView控件有更好的实用性,对它的功能和外观作一些必要的定制是非常有用的,今天就来说一下关于定制这个TreeView相关的一些设计。因为这些东西在一开始编码后就会马上被使用到,先确定好能省不少事。
目前设计了3个辅助TreeView的类,它们分别是:
Class Name | Description |
---|---|
TreeType | 表明树的类型,特殊类型有的地方要特殊处理 |
TreeStyle | 树的外观定制的一些属性和方法 |
TreeAttribute | 树的功能定制的一些属性和方法 |
还有一个全局Object实例__GlobalTreeCache__,用来cache所有的Tree和TreeNode的实例,作用是用来快速的定位制定的TreeNode,特别在异步动态Load子树时非常的有用。
TreeType设计成一个static的类,不能实例化,当然它更像是一个enum。
TreeStyle和TreeAttribute的结构和使用都相同,分开只是为了逻辑上面更加的清晰。这两个类的实现非常简单,就是在其内部定义很多的属性条目就行了。这里有问题的是怎么把这两个内的实例应用到TreeView的实例上去。有两个方法来做这个事情,如果我们不怕麻烦,就先分别生成一个TreeStyle和TreeAttribute的实例,然后再分别赋值给Tree和TreeNode。第二是让Tree和TreeNode内部自动维护这个TreeStyle和TreeAttribute,目前的实现采用的第二种方法,因为这样似乎是TreeView的使用更加简洁。







用户不用去关心TreeStyle和TreeAttribute的生成,然后整棵树共享第一次初始化时生成的TreeStyle和TreeAttribute实例。不过必须注意的是,以后对子树的初始化需要赋给attribute和style参数,否这子树就会生成自己的TreeStyle和TreeAttribute实例

对了,为什么不生成全局变量TreeStyle和TreeAttribute实例呢?那样一个页面的多棵树就不能apply不同的风格了:(
附TreeStyle和TreeAttribute代码(还会根据接下来的开发扩充这两个类):





































to be continued ...
posted on 2005-03-13 16:17 birdshome 阅读(5087) 评论(3) 编辑 收藏 举报
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器