[06.21] LinkLabel 代码重构和我的SinaWeibo7 Project Todolist
前些天发过一个LinkLabel的文章,这些天我用过之后发现很多不方便的地方,前两天着手改进了一下。
给link类添加一个属性叫type,目的是为了给不同类型例如 @xxx #xxx# 和 http:// 甚至是邮箱和电话号码的 Hyperlink button 添加了一个分类的处理方式,这样好像有点繁琐,不过似乎是一个最简单易于实现的办法了。
第一步:扫描发现所有Link 类型,为每一个link生成不同type的link对象,记录在linkcollection 类的一个对象里面,
第二步:排序,因为第一次的扫描是基于很多regex的,所以可能第一个是网页链接,第二个是@人的链接,第三个又是网页链接,我需要在linkcollection里面把他们有正确的出现顺序表达出来,为后面的文字处理提供方便,当然这里我用了一个及其简单的选择法排序,找到链接,选取出startindex 最小项目,然后把它前面的文字包括他本身,一起截断。这样的好处是避免有两个一样的链接出现时候,如果他们的顺序不是紧挨着的,就不会悲剧。不截断的话,如果下次出现以前出现过的一个链接的text,那么index 会显示为以前的那个,比较时候显然会失误的。
第三步:处理文字,把text扫描,基于linkcollection里面的link 来处理文字,这个和以前没什么很大区别,不赘述了。处理过程中switch一下各个链接的type属性,用不同的CreateXXXHyperlinkbutton函数来处理不同的类型的link。生成的hyperlinkbutton 就可以具有各自的click项了,这里参照了SmartTextBlock,做了一个public的event,如果定义过之后,那么点击时候会raise那个event,如果未定义,就用默认的各个type的click事件了。
我不太爱发代码。。。总之记录下来处理经过以后自己看不懂了好改。。。
对了,autocutpanel现在还是只能处理text。经过这次改进,可能对处理hyperlink button 会更容易实现,那么我已经将linklabel改为了autocutpanel的一个继承类,也就是直接用this.children.add语句添加控件了。呵呵,小改小改。这几天考试完毕想把自己的客户端完善一下。但是对于位置信息那一块不太熟悉的领域可能还是不会涉足了。看能否添加中文输入控件。
当然最重要的任务还是研究好raddataboundlist的代码,看滑动特性和载入特性如何兼得,因为我尝试过其他list,如果滑动比较流畅的,那么在页面导航时,即使是goback的 也会载入很慢很慢。但是如果载入很快的,那么滑动起来会很卡很卡。。。怎么破。。。wp7的listbox实属一大挑战。一直盗版使用raddataboundlistbox,两个月的试用期即将到来,那么我还是应该去寻求一个解决方法了。
那么todolist是这样的:
1,账号管理和settings完善。
2,把loginuser和unreadhint单实例化?还是monostate?还是直接本地存储呢。。。
3,申请私信功能,完成私信和@me和最近评论的一个pivot,以及pivot的手势改进。
4,黑名单功能。
5,一些控件了,例如首页的Dock,和登录页面的Square我想做成一个panprama,我有个很棒的idea,嘿。
6,够了够了,再多计划也不能一下吃成大猪头。。。考试完毕再说。复习,复习啊。。。万恶的制冷附件。。。