[WPF] 自定义按钮样式

本文介绍如何使用WPF自定义按钮样式,包括通过ControlTemplate改变按钮的外观而不影响其功能,并展示了三种定义模板的方法:内联定义、作为资源定义以及通过Style定义。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

[WPF] 自定义按钮样式

有了WPF,一切都将变得简单..


样式代码比较多,请看附件! 

 /Files/lovebread/ButtonStyle.rar

 

ControlTemplate 指定控件的可视结构和可视行为。可以通过为控件指定新 ControlTemplate 自定义该控件的外观。创建 ControlTemplate 后,可以在不更改现有控件的功能的情况下更改其外观。例如,您可以将应用程序中的按钮设置为圆形,而不是默认的方形,但该按钮仍将引发 Click 事件。 

 

定义模板的方法有三种:

1.内联定义:

<Button Content="Button1">
  <Button.Template>
    <ControlTemplate TargetType="Button">
      <!--Define the ControlTemplate here.-->
    </ControlTemplate>
  </Button.Template>
</Button> 

2.定义为资源:
<StackPanel>
  <StackPanel.Resources>
    <ControlTemplate TargetType="Button" x:Key="newTemplate">
      <!--Define the ControlTemplate here.-->
    </ControlTemplate>
  </StackPanel.Resources>
  <Button Template="{StaticResource newTemplate}" Content="Button1"/>
</StackPanel>

3.通过Style定义:
<StackPanel>
  <StackPanel.Resources>
    <Style TargetType="Button" x:Key="newTemplate"> 
      <Setter Property="Template">
        <Setter.Value>
          <ControlTemplate TargetType="Button">
            <!--Define the ControlTemplate here.-->
          </ControlTemplate>
        </Setter.Value>
      </Setter>
    </Style>
  </StackPanel.Resources>
  <Button Style="{StaticResource newTemplate}" Content="Button1"/>
</StackPanel>


通过使用 TemplateBinding 保留控件属性的功能

创建新的 ControlTemplate 后,仍可能想要使用公共属性更改控件的外观。TemplateBinding 标记扩展将
ControlTemplate 中元素的属性绑定到由控件定义的公共属性。


根据控件状态更改控件外观
可以使用 VisualState 对象指定控件在处于特定状态时的外观。VisualState 包含 Storyboard,用于更改
 ControlTemplate 中的元素的外观。无需编写任何代码即可实现此目的,这是因为控件的逻辑可通过使用
 VisualStateManager 来更改状态。控件进入 VisualState.Name 属性指定的状态时,演示图板开始工作。
控件退出该状态时,Storyboard 停止。
 

 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值