WPF中的ControlTemplate(控件面板)

WPF包含数据模板和控件模板,其中控件模板又包含ControlTemplate和ItemsPanelTemplate 这里讨论一下ControlTemplate
其实WPF的每一个控件都有一个默认的模板,该模板描述了控件的外观以及外观对外界刺激所做出的反应。我们可以自定义一个模板来替换掉控件的默认模板以便打造个性化的控件。
要替换控件的模板,我们只需要声明一个ControlTemplate对象,并对该ControlTemplate对象做相应的配置,然后将该ControlTemplate对象赋值给控件的Template属性就可以了。
ControlTemplate包含两个重要属性:VisualTree,该模板的视觉树,其实我们就是使用这个属性来描述控件的外观的,Triggers,触发器列表,里面包含一些触发器Trigger,我们可以定制这个触发器列表来使控件对外界的刺激发生反应。
以下代码是对Button模板的重写
首先定义一个“ControlTemplate”, 定义视觉树和属性触发器要在 … 之间,“TargetType=Button”指示我们的模板作用对象为Button,
WPF中的ControlTemplate(控件面板)

定义视觉树
WPF中的ControlTemplate(控件面板)
WPF中的ControlTemplate(控件面板)
定义触发器
WPF中的ControlTemplate(控件面板)
<Trigger.EnterActions>…</Trigger.EnterActions>之间定义的是鼠标移入时触发的动画效果,<Trigger.ExitActions>…</Trigger.ExitActions>之间定义的是鼠标移出时触发的动画效果
Property=”IsMouseOver” 为鼠标移入移出属性,值为True时,将使用触发器
WPF中的ControlTemplate(控件面板)

Property=”IsPressed” 为鼠标按下弹起属性,值为True时,将使用触发器
WPF中的ControlTemplate(控件面板)

Property=”IsEnabled”为按钮失效属性,当值为false时,将使用触发器

WPF中的ControlTemplate(控件面板)
WPF中的ControlTemplate(控件面板)