用Behavior在WP7平台上转换HTML Tag效果

之前的项目需要从服务器获取一段HTML内容,将其效果显示在手机端。Android和iOS都有比较轻松的方法实现此效果,但WP7的RichText比较挫,挫到什么程度?不仅在后台生成内容需要new一大堆Run、Paragraph之类的特定元素,连直接绑定属性都必须用特殊的XAML tags。所以从一开始压根儿就没想着能直接转换。由于要处理的HTML Tags不算很多,所以采用了正则表达式匹配后替换Tag内内容为特定元素的方法。

简单说来就是将某Tag和它后面(可能存在的)普通文本作为“一对”元素进行处理,根据Regex::Matches()匹配出来的一个个Match去找它后面的普通文本,然后分别按照指定的颜色和普通颜色生成两截文字,添加到RichText中。

而单纯绑定RichText的内容是行不通的(见上面的链接),所以用了Behavior进行文本到特定元素的处理,这样将需要绑定的Property丢给Behavior就可以了。

效果类似于:

Demo下载。只演示了识别Font后根据它指定的颜色生成对应文本的效果,由于项目还在进行,没法把解析更多Tag的代码放出来,但思路基本是一致的。

德语自学一个月总结

德语学了一个月,基本上是在Duolingo学习语法和单词、用《新求精德语强化教程》(Stichwort Deutsch Intensivkurs fur Grundstufe)作为辅助练习册的方法。分几点说说感受。

格/性
对于英语作为一外的中国人来说,格/性这两个东西真……真不是个东西!英语中一个“a/an”和“the”就搞定的冠词,德语里面变化真是丰富,4个格 × 3种性就有12个变化(定冠词还得多一种复数,所以是16个变化)。就德语来讲其实变化已经非常规律,但仍然让我痛苦了好一阵。

人称代词变化还好些,因为英语本身也是有一定的格变化残留,接受起来并不太痛苦。就是“与格”这个东西是新知识,什么时候算是与格?一开始以为mit(with)后面就是,学着学着发现这只是一种情况;介词后面也有可能是与格;而刚刚提前学了一点新的语法知识才知道,双宾语(间接宾语)情况下第一宾语也要用与格。不适应感的消退估计还要一段时间,而具体“消退”的标准应该是能本能反应变格后的情况吧。

如果觉得光冠词有变化那就图样图森破,形容词也有变化,并且还针对定冠词/代词、不定冠词/不定代词/物主代词和无冠词三种情况分别做弱变化、混合变化和强变化!单纯地记忆三种变化并不难:弱变化阳性主格、阴性和中性主格宾格词尾-e,其余都是-en;混合变化阳性主格-er,阴性主格宾格-e,中性主格宾格-er,其余都是-en;强变化同不定冠词词尾。但要在句子中使用就非常痛苦,比如Ich sehe seine schwarze Katze(我看他的黑猫),先要反应“猫”是阴性,再想到它位于宾格位置,所以物主代词词尾-e,形容词词尾-e。如果是Katzen的话,那么物主代词不变,形容词变为schwarzen……天啊!

而当我知道名词可能也需要变化时候,都快想到放弃了。这种叫做“名词弱变化”的现象发生在阳性名词上,一旦发生那么属格一般加-es,而与格宾格加-es/-en/-e。比如Traum(梦)在属格情况下变为Traums,Elefant(象)三种格均加-en。似乎完全没有规律的感觉。

发音
德语的发音真的比英语规矩多了,基本没有特别情况,就算是有同样字母发不用音的时候也都是固定组合。特别的小舌音老实说真的不好听,而且据前辈介绍就算用“ha”蒙混过关也没关系。但如果想真的说一口地道德国普通话,还是得有环境,并且尽力去模仿他们发音。顺带一提,之前在阅读《日语概说》一书中时候看到这样的事实:日语和汉语中发音的“拍”——或者说不用的发音音节——数量较少,日语110多个,而中文普通话是500左右。

所以我想到,老外说日语很快就可以说得听不出口音,中文则是因为有音调的关系稍难。而西方语言,例如英语和德语,都有上万个“拍”。导致东方人去学习的话就算尽力模仿也无法做到全都达到成为Native Speaker级别的要求。英语口语牛逼到可以和英美人对骂程度也还是能听出来些许口音。当然这只是我胡思乱想的推论,见过的英语口语牛逼人也不多,如果不靠谱请见谅。

动词变形
动词根据人称的变形比英语复杂些,不是简单的三单、非三单而是针对每种人称的单/复数都有不同的形式。但不论是强变化(不规则,例如essen->isst、schlafen->schläft等)还是弱变化(规则,例如lieben->liebt),变化形式总是一定的。强变化动词大概有200个,那么按照变化规律分组背下来就是了。当然这只是说说简单,没有大量练习和实用达不到目标,更不要提动词还有过去式和过去分词的变化。

复数
几乎被复数击倒,有-n的,有-e的,有-se的,有去掉词尾加-es的、有元音变化且加-e的,还有不变的……在找到规律前只能背。

介词
又一个门槛!介词数量多,每个词的用法又有好几个,例如vor有在……前的意思,又能表原因,还能当副词的“之前”讲。而介词后面接名词的格也有讲究,有些词搭配方向性动词(gehen、kommen、laufen……)时候后面接宾格,而表示状态的时候要接与格——即“静三动四”。不过类似于Hinter den Jungen kommt der Wolf(狼跟在男孩们后面)这种句子,虽然是kommen但由于hinter不是指示主格名词的移动,所以还是算“静三”,只有类似于Er liegt das Buch hinter den Tisch(他把书放到桌子后),时候算是“动四”。

顺带一提,Hinter den Jungen kommt der Wolf这句子把我搞糊涂了很久,因为Den Jungen可以是Jung的复数与格形式,也可以是Junge的单数宾格形式。所以在这里我纠结了很久不知道这里的Hinter应该是静三还是动四。后来看了Duolingo上相关讨论才确定是与格。

语序
对于我这样的初学者来说,读德语文本简直就是找主语游戏,就拿上面“狼”那个句子来说,主语竟然在最后!而Im Juli trinken wir Wein(我们在7月喝酒)主语又跑到了动词和宾语之间。还没有学到动词不定式和从句,我已经快吐血。

与英语的相似性
见到和英语差不多的词学起来很愉快,如Elefant/Elephant、Nummer/Number,Definte/Definieren、Gut/Good、Kritik/Critic……数量还相当多,基本可以归纳的是ph->f、单独的c->k这两种变化。而语序上(正常的SVO语序)基本和英语类似——当然我还没有学到更高级的语法,例如zu不定式,冠词引导从句等,但就目前来看没有什么太大差别,所以备一本《实用英语德语语法比较》应该比较好。

不适应的地方
类似省略介词的地方,比如Ende September/Restaurant meinen Vater,习惯英语中End of September/Restaurant of my father’s,少了of总感觉缺点什么。还有如Es ist mir egal,直接把人称与格作为针对对象,类似英语中”not a matter to me”,少了个“to”总感觉怪。

之后的计划
跟着《标准德语语法》重温基础的部分,达到各种变形可以条件反射的程度。单词量要靠阅读来补,有WWW在那么阅读材料就不是问题。听力不知道有什么好的初学者向的可选,类似之前看的Fate/Stay Night UBW德语版这种ACG材料就不错。

p.s
我终于知道“我练功发自真心”和“我到河北省来”的原文了!(”Oh mein Gott, was ist geschehen!” 和 “Und doch habe ich allein”)。