当前位置: 老葡京网站娱乐 > web开发 > Silverlight > 正文

Silverlight自定义Grid实线

时间:2013-11-15 cnblogs jasenkin

老葡京网站娱乐 www.sdguanhua.com (一)前言

由于项目的需求,必须用silverlight实现表格形式的预警图。在Silverlight中表格形式的最佳方式为Grid,虽然Grid提供了ShowGridLine属性,但是该线条为虚线,外观看起来很不协调??嫉氖焙?,本人打算在每个Cell中采用Border来设置线条。这样虽然可以实现实线,但是每行每列都会涉及到单元格与单元格之间的重叠,以及第一列与最后一列、第一行与最后一行的线条控制需要复杂的算法来控制,因此这种方式肯定是行不通的(不是实现不了,而是将简单的问题复杂化了)。下面讲解的是另外一种方式,采用添加直线的方法来绘制实线。

(二)类图设计

下面所涉及的都是针对于特定情况下的Grid实线绘制,仅仅是本人项目中抽象出来的简单版本而已(仅仅是思路,具体实现涉及到信息安全,哥可扛不起,哈哈,现在的绝对与项目无关),类图如下:

实现的效果图如下:

(三)具体实现

这里主要可以控制第一行的高度,第一列的宽度,Grid在容器Canvas的间隔(LeftMargin,TopMargin),其他单元格的宽度、高度,Grid的行数,Grid的列数。至于实线的具体绘制封装在基类GridFormatter中,具体单元格的内容由子类来实现(可能用于很多场景),第一行的标题,第一列的内容都有子类AlertTable去实现。这里涉及到一些简单的数学运算,应该是很容易理解的。实现多态的话,只要实现抽象类GridFormatter的抽象方法SetTableContent即可。