文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

如何在C#项目中使用WPF自定义按钮

2023-06-06 17:28

关注

今天就跟大家聊聊有关如何在C#项目中使用WPF自定义按钮,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

实现效果

  1. 使用图片做按钮背景;

  2. 自定义鼠标进入时效果;

  3. 自定义按压效果;

  4. 自定义禁用效果

实现步骤

  1. 创建CustomButton.cs,继承自Button;

  2. 创建一个资源文件ButtonStyles.xaml;

  3. 在资源文件中设计按钮的Style;

  4. 在CustomButton.cs中添加Style中需要的依赖属性;

  5. 在程序中添加资源并引用(为了方便在不同的程序中引用自定义按钮,自定义按钮放在独立的类库中,应用程序中进行资源合并即可)。

示例代码

// ButtonStyles.xaml<Style x:Key="CustomButton" TargetType="{x:Type local:CustomButton}">  <Setter Property="Template">    <Setter.Value>      <ControlTemplate TargetType="{x:Type local:CustomButton}">        <Grid x:Name="container">          <Image Width="{TemplateBinding Width}" Height="{TemplateBinding Height}"               Source="{Binding ButtonImage,RelativeSource={RelativeSource Mode=TemplatedParent}}">            <Image.RenderTransformOrigin>              <Point X="0.5" Y="0.5"/>            </Image.RenderTransformOrigin>            <Image.RenderTransform>              <ScaleTransform x:Name="scaletrans" ScaleX="1" ScaleY="1"/>            </Image.RenderTransform>          </Image>        </Grid>        <ControlTemplate.Triggers>          <Trigger Property="IsEnabled" Value="False">            <Setter Property="Opacity" Value="0.5" TargetName="container"/>          </Trigger>          <Trigger Property="IsMouseOver" Value="True">            <Setter Property="Background" Value="#2c000000" TargetName="container"/>          </Trigger>          <Trigger Property="IsPressed" Value="True">            <Trigger.EnterActions>              <BeginStoryboard>                <Storyboard>                  <DoubleAnimation Storyboard.TargetName="scaletrans" Storyboard.TargetProperty="(ScaleTransform.ScaleX)"                   To="0.8" Duration="0:0:0.15" AutoReverse="True"/>                  <DoubleAnimation Storyboard.TargetName="scaletrans" Storyboard.TargetProperty="(ScaleTransform.ScaleY)"                   To="0.8" Duration="0:0:0.15" AutoReverse="True"/>                </Storyboard>              </BeginStoryboard>            </Trigger.EnterActions>          </Trigger>        </ControlTemplate.Triggers>      </ControlTemplate>    </Setter.Value>  </Setter></Style>// CustomButton.cspublic class CustomButton : Button{  public ImageSource ButtonImage  {    get { return (ImageSource)GetValue(ButtonImageProperty); }    set { SetValue(ButtonImageProperty, value); }  }  public static readonly DependencyProperty ButtonImageProperty =    DependencyProperty.Register("ButtonImage", typeof(ImageSource), typeof(CustomButton),    new FrameworkPropertyMetadata(null, FrameworkPropertyMetadataOptions.AffectsRender));}// App.xaml 合并资源<Application.Resources>  <ResourceDictionary>    <ResourceDictionary.MergedDictionaries>      <ResourceDictionary Source=".../ButtonStyles.xaml"/>    </ResourceDictionary.MergedDictionaries>  </ResourceDictionary>   </Application.Resources>// view.xaml 使用<Grid>  <customcontrols:CustomButton Width="48" Height="48"     Style="{StaticResource CustomButton}" ButtonImage="/Louzi.Paint;component/Images/Toolbar/write.png"/></Grid>

看完上述内容,你们对如何在C#项目中使用WPF自定义按钮有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注编程网行业资讯频道,感谢大家的支持。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯