拼吾爱程序人生

首页 » .Net编程 » Silverlight » SnipperImages(Silverlight DEMO)控件设计之--CheckBox
cobra - 2008-9-10 12:23:00
在SnipperImages中使用了CheckBox控制,但它未直接使用Silverlight中的CheckBox,而是实现了自己的CheckBox控件。当然它的实现方式是采用“控件复合”的方式(下面会详细说明)。而通过这种实现方式,可以施加更多的控制和动画效果在CheckBox上,使其整体表现更酷(甚至定义第三种选中状态)。

  当然,我们也可以通过VisualStateManager来订制 Silverlight所提供的CheckBox效果,例如下面的视频教程:

      http://silverlight.net/learn/learnvideo.aspx?video=56930   


  但我想写这个DEMO的人肯定是有其目的,我猜其意图是告诉我们如何进行控件的UI(xaml)绘制和事件设计。说实在的,在看其CheckBox代码之前,我还真没想过如何去实现CheckBox,一是因为是简单,二
是它太基础了。不用我们去开发它,微软已把它变成“原子级”的控件封装到控制库中了。所以看到DEMO之后,才让我感到控件设计也应该从原始做起,一步一步来构造行为越来越复杂,UI越来越酷的控件。

    好了,开始今天的正文吧:)


    在SnipperImages中,CheckBox由三个部件(所谓的部件(Parts)是指在空间模板中元素,控件逻辑将会控制这些部件来完成一些特定的控件)组成:

  Rectangle:用于绘制CheckBox外方框

        Path:用于绘制选中时的"X"图形(当然也可以按自己的意愿任意绘制)

        TextBlock:用于显示文本(提示)


      这三个对象通过Grid.ColumnDefinitions进行布局,其中Rectangle和Path被放在一列,TextBlock一列。
如下Xaml代码所示:

Code


因为通常CheckBox在显示时为未放中状态,所以上面的Part_Check的Visibility属性为"Collapsed",而
在选中时为“Visible”。


    而其显示效果如下图所示(红框内容对应上面的三个元素):


 附件: 您所在的用户组无法下载或查看附件





下面即是其控件的CS代码(详情见注释):

Code


下面是一个使用DEMO,首先是Xaml中的定义:

Code


接着是实现全屏复选框所执行的CS代码:

Code


好了,今天的内容就先到这里了:)



    作者:代震军,daizhj
    原文链接:http://www.cnblogs.com/daizhj/archive/2008/09/03/1282819.html



    源码下载,请点击这里:
 附件: 您所在的用户组无法下载或查看附件

 您可能对 [Silverlight] 的这些文章也感兴趣:

使用SilverLight构建插件式应用程序(六)
Silverlight专题(14) - 基于Silverlight的Live Search图片搜索
Silverlight 点燃了 RIA 之争
Silverlight 2应用程序中XAP文件的生成、使用和执行
Silverlight 2 (beta1)数据操作(3)
三分钟制作精美电子地图(Silverlight 2 + Deep Zoom 含代码)
一步一步学Silverlight 2系列(7):全屏模式支持
Silverlight 初体验
Silverlight Tools for Visual Studio 2008 SP1 正式发布
专访Silverlight中国团队:从事最底层CLR核心代码研发
1
查看完整版本: SnipperImages(Silverlight DEMO)控件设计之--CheckBox
Modify by pin5i DZNT_ExpandPackage 2.1.3258 2007-2008 pin5i.com
  Total Unique Visitors: