wpf进阶教程(一):创建控件模板ControlTemplate

控件模板可对控件的内容和样式均做出改变。
项目源码
防止两个按钮,第一个为普通按钮,第二个应用了控件模板:

<Window.Resources>
    <ControlTemplate x:Key="ButtonTemplate" TargetType="{x:Type Button}">
        <Border BorderBrush="Orange" BorderThickness="3" CornerRadius="2" Background="Red" TextBlock.Foreground="White">
            <ContentPresenter VerticalAlignment="Center" HorizontalAlignment="Center">
            </ContentPresenter>
        </Border>
    </ControlTemplate>
</Window.Resources>
<StackPanel Margin="5">
    <Button Margin="5" Padding="3" Content="普通按钮"/>
    <Button Margin="3" Padding="3" Template="{StaticResource ButtonTemplate}"><!--使用模板,以资源格式-->
        模板化按钮
    </Button>
</StackPanel>

在这里插入图片描述
我们修改了Padding属性为:Padding=“23”,但是没有发生任何属性,原因是在StackPannel中并不关注Padding的值,只关注Margin的值,要想改变,就要在模板中绑定:Margin="{TemplateBinding Padding}",让StackPannel注意按钮中内容的Margin而不是按钮的Padding。
我们设置当鼠标划过按钮时,背景颜色变为深红色,在Template中设置触发器:

<ControlTemplate.Triggers>
    <Trigger Property="IsMouseOver" Value="True">
        <Setter TargetName="border" Property="Background" Value="DarkRed"/>
    </Trigger>
</ControlTemplate.Triggers>

在这里插入图片描述
这样就实现了效果。
还可以在一个触发器中添加多个设置器:

<Trigger Property="IsPressed" Value="True">
    <Setter TargetName="border" Property="Background" Value="Blue"/>
    <Setter TargetName="border" Property="BorderBrush" Value="IndianRed"/>
</Trigger>

猜你喜欢

转载自blog.csdn.net/qq_43511299/article/details/121686278
今日推荐