ExReaderPlus UI 技术相关文档
技术说明书
1、RichEdit 自定义:
RichEdit 是UWP自带的富文本控件,<富文本> 能进行对其内的文本按指定格式进行重新组织;
这样就能实现对其内文本的 部分着色 和 类似 上、下标 关键字 的效果,但是我们的项目并没有在这个
方向上进行扩展,因为这样没有办法达到即时响应。
所以,在富文本控件的基础上,我加上了一层Canvas,Canvas是绝对布局,将其和RichEdit
放在同一 Grid 内可以保证他们的大小相同,通过 RichEdit 的 Selection.GetRect() 可以得到选中的文本的
矩形范围,创建单词与其位置的字典,就可以根据这个字典将控件布局到单词的位置(当然,是在顶
层的 Canvas 上),这个控件只需要具有基本的响应就可以完成我们所需要的效果。
具体细节的话请查看此项目的 GitHub :https://github.com/20154530/ExReaderPlus
2、IValueConverter 接口
在UWP系列程序的开发中,时常会遇到这样的情况:一个控件有一个状态值 bool \ Int \ enum
我们需要根据这个来控制一些界面效果:如,着色,控制显示与否等。
这时候 Converter 会为我们提供很多便利,
IValueConverter 提供两个方法:
[ 当然在使用前需要在能够引用到的 resources 中为这个 Converter 创建一个静态实例 ]
Convert :提供binding值到目标值的转换,比如
Visibility="{Binding Visibility,ElementName=NowDic,Converter={StaticResource NegativeConverter}
,ConverterParameter=Vis}"
ConvertBack :在双向绑定时使用,方法一样。
3、SVG & 位图图标
SVG 是个好东西,它能够描述出矢量化的图标,并能够实时控制着色,形状等属性。
Path 是 UWP 中实现 SVG 的控件 。 Path 的 Data 属性支持字符描述的 SVG 路径
环形拖动控制条可以使用这个来实现。
项目地址:https://github.com/20154530/UWPTeamWork
4、Binding
虽然 UWP 的 Binding 种类比较少,但是通过一些办法还是可以用的很灵活的,Binding 有
ElementName 、RelativeSource 、Source 可以定位输入
ElementName 可以用于定位区块内的其它控件
这样可以把一个多个属性值聚集到一个属性上,然后动画修改这个属性来控制所有控件的相关属性
RelativeSource 可以用于定位 自身模板类型 、自身 的属性
这样控件可以根据自身属性来确定自己的状态,比如使 Textblock 无文字隐藏
Source 可以用于定位 资源中使用 Key 标识的任意静态类型
可以在一个页面中使用其它页面 viewmodel 的属性,当然不推荐这样做
还有其它许多细枝末节的东西就不说了