CustomControl ImageButton

스타일
<Style TargetType="{x:Type c:ImageButton}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type c:ImageButton}">
<Border x:Name="buttonBorder">
<Border.Effect>
<DropShadowEffect Opacity="0.0" />
</Border.Effect>
<Image Source="{TemplateBinding NormalImage}" x:Name="img" />
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsPressed" Value="true">
<Setter TargetName="img" Property="Source" Value="{Binding PressImage, RelativeSource={RelativeSource TemplatedParent}}" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
사용예 :
<c:ImageButton x:Name="xStartBtn" Width="300" Height="300" Content="Start" NormalImage="/CartoonMuseum;component/Images/sampleBtn.png" PressImage="/CartoonMuseum;component/Images/samplePressBtn.png" />
Themes/Generic.xaml<Style TargetType="{x:Type c:ImageButton}"><Setter Property="Template"><Setter.Value><ControlTemplate TargetType="{x:Type c:ImageButton}"><Border Name="buttonBorder"><Border.Effect><DropShadowEffect Opacity="0.0" /></Border.Effect><Border.Child><Image Source="{TemplateBinding NormalImage}" x:Name="img" /></Border.Child></Border><ControlTemplate.Triggers><Trigger Property="IsPressed" Value="true"><Setter TargetName="img" Property="Source" Value="{Binding PressImage, RelativeSource={RelativeSource TemplatedParent}}" /></Trigger></ControlTemplate.Triggers></ControlTemplate></Setter.Value></Setter></Style>
ImageButton.cs
public class ImageButton : Button{public ImageSource NormalImage{get { return base.GetValue(NormalImageProperty) as ImageSource; }set { base.SetValue(NormalImageProperty, value); }}public static readonly DependencyProperty NormalImageProperty =DependencyProperty.Register("NormalImage", typeof(ImageSource), typeof(ImageButton));public ImageSource PressImage{get { return base.GetValue(PressImageProperty) as ImageSource; }set { base.SetValue(PressImageProperty, value); }}public static readonly DependencyProperty PressImageProperty =DependencyProperty.Register("PressImage", typeof(ImageSource), typeof(ImageButton));public ImageButton(){DefaultStyleKey = typeof(ImageButton);}public override void OnApplyTemplate(){base.OnApplyTemplate();}}