Silverlight自定义Grid实线

(一)前言

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

(二)类图设计

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

实现的效果图如下:

(三)具体实现

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

时间: 2025-01-27 04:29:07

Silverlight自定义Grid实线的相关文章

Silverlight自定义数据绑定控件应该如何处理IEditableObject和IEditableCollectionView对象

最近在一直研究Silverlight下的数据绑定控件,发现有这样两个接口IEditableObject 和IEditableCollectionView,记录一下结论,欢迎交流指正. 本文会重点介绍在构建Silverlight自定义数据绑定控件的过程中,我们会对数据源进行操作,那么就会碰到上述两个接口,如何正确的处理它们.   IEditableObject 这个概念早在.Net 1.0的时候就提出了,但是我一直没有关注过这个东东. What is IEditableObject? IEdita

silverlight 设定grid大小

问题描述 <Gridx:Name="RootElement"><Grid.RowDefinitions><RowDefinitionHeight="50%"/><RowDefinitionHeight="50%"/></Grid.RowDefinitions></Grid>在xaml中这样设定可以么?可是显示的却是<RowDefinitionHeight="5

Silverlight自定义类库实现应用程序缓存

默认情况下,如果SL项目引用了一些其它程序集(即通俗意义上的dll文件),在编译打包时,这些dll会全部打包到一个xap文件里,随着引用的dll文件越来越多,xap文件会越来越大. 这还不是最严重的问题,如果确实需要使用这些dll,大就大吧,要用它容量肯定就会增加.但是如果多个SL项目都要引用相同的程序集时,这些dll会重复打包进每个xap文件,用户在加载多个xap时,实际上是重复下载了这部分dll文件,带宽使用率太低. 为了改善这种情况,SL引用了"应用程序库缓存"的概念,在vs20

玩转Silverlight控件(四)——Grid布局

在这一节,我主要来介绍Silverlight的Grid布局. 先来让我们复习一下HTML的Table布局. 在这里这么说:Table布局只是为了为Grid来做个铺垫.因为我们知道,Table是为了容纳数据,而CSS 才是我们布局的首选. 先不管这些,我们看下我们用Table是如何布局的. <table border="1"> <tr> <td>111</td> <td>222</td> <td>333&

Silverlight体积优化

Silverlight体积优化 Silverlight是运行在客户端的富媒体应用程序,他可以使表现形式更加的丰富多彩,相应的开发人员需要写大量的XAML.代买添加很多图片以及一些其他的资源文件.这就直接导致了应用程序体积的增大.在所有的文件都要从服务器上下载的情况下,这是一个极为严重的问题.如果你的应用大于5MB 加载时间过长的话会直接导致访客的流失. 这里将谈论一下如何减少应用程序的体积. 体积优化 移除未使用的程序集Visual Studio在创建sl应用后默认情况下加了很多的程序集,有些可

分析Silverlight Button控件布局

分析Silverlight Button控件布局   答:关于按钮自适应 Silverlight也算一个比较开放的技术.Button控件其实也是一些标准的Grid.Canvas.Rectangle.TextBlock组成的.(图1) 要做到按钮的宽度和高度根据字体大小和字数自动适应,其实就是调整好Layout,做以一个能自适应的界面.在Silverlight中Grid这个容器是能自适应的.是把字体TextBlock放到一个Grid中,对这个TextBlock设置相当Grid的边距,就好像是htm

基于SOA架构采用Extjs展现的权限系统之总体设计探讨

上一篇文章说过,系统由数据层,业务层,服务层,数据契约层,WCF代理层 ,ExtJs代理层,展现层组成.现在我们一起探讨这些层之间的作用. 众所周知,主流的三层结构由数据库,业务层与展现层组成.我认为:SOA架构 在三层的基础上添加服务层,数据契约层,WCF代理层. 现在一起探讨一 下各层之间的作用吧! 数据层:用于与数据库交互的层.提供简洁实用 的数据库访问方法,如:添加,删除,更新,查找等等.我这里的数据层采用 Linq技术,由Linq自动生成数据访问层,节省了不少开发时间哦. 业务 层:用

【Silverlight】Bing Maps开发应用与技巧二:自定义图钉标注控件和动态ToolPa

[Silverlight]Bing Maps开发应用与技巧二:自定义图钉标注控件和动态ToolPanel 在Bing Maps Silverlight Control中以及为我们提供了地图图钉控件Pushpin,我曾经在<使用图钉层(Pushpin layer)及地图图层(MapLayer)>一文中介绍过他的使用方法,本篇主要介绍如何自定义图钉标注控件以及对他的一些扩展,比如实现图钉的动态ToolPanel. 关于图钉的UI外观的设计这里就不详细介绍了,通过Blend可以快速的构建UI界面.首

自定义控件-WPF/Silverlight Xaml 自定义ContentControl内容符号名的问题

问题描述 WPF/Silverlight Xaml 自定义ContentControl内容符号名的问题 在silverlight中,我自己写一个继承自ContentControl的内容控件GroupBox其xaml如下 <ContentControl x:Class=""EnvSafe.PTA.Shell.GroupBox"" xmlns=""http://schemas.microsoft.com/winfx/2006/xaml/pres