欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

WPF图片按钮的实现

程序员文章站 2022-07-05 08:49:19
直接代码 样式代码 调用实例 效果展示 本文原创出处:http://www.cnblogs.com/PettyHandSome/ 欢迎各位转载,但是未经作者本人同意,转载文章之后必须在文章页面明显位置给出作者和原文连接,否则保留追究法律责任的权利! ......

直接代码

 1  public class ImageButton : System.Windows.Controls.Button
 2     {
 3 
 4         /// <summary>
 5         /// 图片
 6         /// </summary>
 7         public static readonly DependencyProperty ImageProperty = DependencyProperty.Register("Image", typeof(ImageSource), typeof(ImageButton),
 8             new PropertyMetadata(null));
 9 
10         /// <summary>
11         /// 图片的宽度
12         /// </summary>
13         public static readonly DependencyProperty ImageWidthProperty = DependencyProperty.Register("ImageWidth", typeof(double), typeof(ImageButton),
14             new PropertyMetadata(double.NaN));
15 
16         /// <summary>
17         /// 图片的高度
18         /// </summary>
19         public static readonly DependencyProperty ImageHeightProperty = DependencyProperty.Register("ImageHeight", typeof(double), typeof(ImageButton),
20             new PropertyMetadata(double.NaN));
21 
22         /// <summary>
23         /// 构造函数
24         /// </summary>
25         static ImageButton()
26         {
27             DefaultStyleKeyProperty.OverrideMetadata(typeof(ImageButton), 
28                 new System.Windows.FrameworkPropertyMetadata(typeof(ImageButton)));
29         }
30 
31         /// <summary>
32         /// 设置图片
33         /// </summary>
34         public ImageSource Image
35         {
36             get
37             {
38                 return GetValue(ImageProperty) as ImageSource;
39             }
40             set
41             {
42                 SetValue(ImageProperty, value);
43             }
44         }
45 
46         /// <summary>
47         /// 图片宽度(属性)
48         /// </summary>
49         public double ImageWidth
50         {
51             get
52             {
53                 return (double)GetValue(ImageWidthProperty);
54             }
55             set
56             {
57                 SetValue(ImageWidthProperty, value);
58             }
59         }
60 
61         /// <summary>
62         /// 图片高度(属性)
63         /// </summary>
64         public double ImageHeight
65         {
66             get
67             {
68                 return (double)GetValue(ImageHeightProperty);
69             }
70             set
71             {
72                 SetValue(ImageHeightProperty, value);
73             }
74         }
75 
76     }

样式代码

 1     <Style TargetType="{x:Type xi:ImageButton}">
 2         <Setter Property="Template">
 3             <Setter.Value>
 4                 <ControlTemplate TargetType="{x:Type xi:ImageButton}">
 5                     <Grid>
 6                         <Grid.RowDefinitions>
 7                             <RowDefinition Height="*"/>
 8                             <RowDefinition Height="Auto"/>
 9                         </Grid.RowDefinitions>
10                         <Border x:Name="border" Grid.RowSpan="2" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" 
11                                 SnapsToDevicePixels="true" CornerRadius="3,3,3,3"/>
12                         <Image Grid.Row="0" Source="{TemplateBinding Image}"
13                                    Width="{TemplateBinding ImageWidth}"
14                                    Height="{TemplateBinding ImageHeight}"
15                                    VerticalAlignment="{TemplateBinding VerticalAlignment}"/>
16                         <ContentPresenter Grid.Row="1" HorizontalAlignment="Center" Margin="{TemplateBinding Padding}"   
17                                     VerticalAlignment="Center" RecognizesAccessKey="True" />
18                     </Grid>
19                     <ControlTemplate.Triggers>
20                         <Trigger Property="IsPressed" Value="True">
21                             <Setter Property="Foreground" Value="#999999"/>
22                         </Trigger>
23                     </ControlTemplate.Triggers>
24 
25                 </ControlTemplate>
26             </Setter.Value>
27         </Setter>
28     </Style>

调用实例

1     <xi:ImageButton Image="../Image/设置.png" Content="新增会员" ImageHeight="52" ImageWidth="52" Width="72" Height="72" Margin="30,10,10,10"/>

效果展示

WPF图片按钮的实现

本文原创出处:http://www.cnblogs.com/PettyHandSome/

欢迎各位转载,但是未经作者本人同意,转载文章之后必须在文章页面明显位置给出作者和原文连接,否则保留追究法律责任的权利!