浅析ControlTemplate类

来源:互联网 发布:命令行安装node 编辑:程序博客网 时间:2024/05/19 06:17

ControlTemplate类的作用是重新定义控件的视觉效果和触发状态。控件在获取焦点或者被按下时,一般会显示出不同的状态,以便于用户区分。系统控件的视觉状态都是事先已经设定好的。这样做的好处是,可以复用已有的代码,大大节省了UI界面开发周期。有时候,用户需要为控件设定自己想要的视觉效果,比如:按钮控件的皮肤,指定为自定义的风格。这时,就需要借助ControlTemplate类。以下是一个简单的例子:

<Style x:Key="ButtonStyleLogin" TargetType="{x:Type Button}">            <Setter Property="Template">                <Setter.Value>                    <ControlTemplate TargetType="{x:Type Button}">                        <StackPanel Orientation="Horizontal">                            <Image x:Name="minBtn" Source="Resources/login/013.png" />                        </StackPanel>                        <ControlTemplate.Triggers>                            <Trigger Property="IsMouseOver" Value="True">                                <Setter Property="Source" Value="Resources/login/013_f.png" TargetName="minBtn" />                            </Trigger>                            <Trigger Property="IsPressed" Value="True">                                <Setter Property="Source" Value="Resources/login/013_p.png" TargetName="minBtn" />                            </Trigger>                        </ControlTemplate.Triggers>                    </ControlTemplate>                </Setter.Value>            </Setter>        </Style>
简单的解释下以上的代码。

该代码片段的作用是为按钮控件提供一个自定义的Style(按钮风格)。按照行的顺序依次标号并解释如下:

1. 该Style作为应用程序资源的一部分,拥有资源键"ButtonStyleLogin"。之后指明了该Sytle的作用类型是Button

2. 定义Button类的Template,修改Button的风格,也就是前面提到的自定义按钮控件的视觉和触发效果。

3. Property-Value对中的Value

4. 定义一个ControlTemplate元素对象,赋值给Button.Template。指定该ControlTemplate元素对象的类型是Button

5~7. 定义在正常状态下按钮的视觉表现效果。布局为水平,背景图片选取”Resources/login/013.png",并指明Image对象名“minBtn”(为后面定义触发状态准备)

8~end. 定义触发效果。当鼠标停留或者按下时,选取不同背景图片。

0 0
原创粉丝点击