使用Silverlight开发的人总会碰到修改控件样式的问题,但是如果如题所述的几个重要概念不清楚,就会导致思路的混乱,以及无法实现自己的要求。呵呵,我就是这样啦,哈;因此我花费了一些时间总结了一下我的理解,如果有错误的地方也希望高手能指正一下吧。
以Button为例,从类的继承关系上看,它继承ButtonBase,而ButtonBase又继承了ContentControl类,这个类是比较重要的,ContentControl类用于包含单项内容的控件,呵呵,它有个类似的哥们ItemsControl类(用于显示多个项的控件)。说它们重要,是因为如果我们想重新定义一个控件外观和行为时,会使用到那个控件的Template属性,这个属性是Control类的属性,大部分控件都直接或间接继承它,也就是说大部分控件都会存在这个Template属性。看看它的返回类型,ControlTemplate类,和ContentTemplate属性很相似的,我开始就是被它们给骗了,呵呵。在这个Template里,你需要定义VisualStateGroups(状态组),VisualState(状态),复杂的还有VisualTransition(状态之间的过度),以及我们想设计的外观布局。
再来说说ContentTemplate属性,这个属性是ContentControl类的属性,其返回类型是DataTemplate类,它主要用于不改变控件行为的基础上,进行控件内容的修改&#x