WPF中Controltemplate的使用

wpf精品课程-基础应用-第九节-ControlTemplate的使用_哔哩哔哩_bilibili

视频地址大家可以结合看

> #### 为什么要使用ControlTemplate

> 它允许你完全自定义控件的外观和行为,而不需要继承自现有的控件类。通过使用 `ControlTemplate`,可以定义控件的结构、布局、样式和触发器,从而实现高度的自定义和灵活性。

#### 1、定义ControlTemplate

和资源一样,我们可以在控件中定义,也可以在资源字典中定义。

```
    <Window.Resources>
        <ControlTemplate x:Key="MyCustomButtonTemplate" TargetType="Button">
            <Border x:Name="border" Background="{TemplateBinding Background}"  
                BorderBrush="{TemplateBinding BorderBrush}"  
                BorderThickness="{TemplateBinding BorderThickness}">
                <ContentPresenter HorizontalAlignment="Center"  
                              VerticalAlignment="Center"/>
            </Border>
        </ControlTemplate>
    </Window.Resources>
```

#### 2、应用ControlTemplate

```
 <Button Content="请看这个按钮的变化" Template="{StaticResource MyCustomButtonTemplate}" HorizontalAlignment="Left" Margin="197,137,0,0" VerticalAlignment="Top" Height="98" Width="255" Background="Cyan" BorderBrush="Red" BorderThickness="20"/>
```

这个代码表示的是:定义了一个controlTemplate,他应用于button,设置了一些属性,采用TemplateBinding来绑定属性,他允许你把模板的属性绑定到模板元素上。

#### 3、添加触发器

```
     <ControlTemplate x:Key="MyCustomButtonTemplate" TargetType="Button">
        <Border x:Name="border" Background="{TemplateBinding Background}"  
            BorderBrush="{TemplateBinding BorderBrush}"  
            BorderThickness="{TemplateBinding BorderThickness}">
            <ContentPresenter HorizontalAlignment="Center"  
                          VerticalAlignment="Center"/>
        </Border>
        <ControlTemplate.Triggers>
            <Trigger Property="IsMouseOver" Value="True">
                <Setter TargetName="border" Property="Background" Value="LightBlue"/>
                <Setter TargetName="border" Property="BorderBrush" Value="Blue"/>
                <Setter TargetName="border" Property="BorderThickness" Value="30"/>
            </Trigger>
        </ControlTemplate.Triggers>
    </ControlTemplate>
</Window.Resources>
```

```
 <Button Content="请看这个按钮的变化" Template="{StaticResource MyCustomButtonTemplate}" HorizontalAlignment="Left" Margin="197,137,0,0" VerticalAlignment="Top" Height="98" Width="255" Background="Cyan" BorderBrush="Red" BorderThickness="20"/>
```

#### 4、ControlTemplate与资源有联系?

他们不是一个概念,资源用于实现控件的属性的定义,动态资源用于实现控件属性的动态更新,而ControlTemplate用于定义控件的外观与行为。他们是可以组合使用的。

ControlTemplate的一个核心理念就是:把模板内部的元素的的属性绑定到应用这个模板的控件上的同名属性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值