WPF 自定义图片按钮
此文档仅仅是一个BaseCode,已做后续查阅
XAML代码:
<Button x:Class="IM.UI.UC.IM_ImageButton" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" Name="loc"> <Image Name="innerImage" Stretch="None" Source="{Binding Path=ImageSourceEx,ElementName=loc}" /> </Button>
CS代码:
public IM_ImageButton() { InitializeComponent(); FrameworkElement.DefaultStyleKeyProperty.OverrideMetadata(typeof(IM_ImageButton), new FrameworkPropertyMetadata(typeof(Button))); this.IsEnabledChanged += new DependencyPropertyChangedEventHandler(ImageButton_IsEnabledChanged); } public ImageSource GrayImageSourceEx { get { return (ImageSource)GetValue(GrayImageSourceExProperty); } set { SetValue(GrayImageSourceExProperty, value); } } public static readonly DependencyProperty GrayImageSourceExProperty = DependencyProperty.Register("GrayImageSourceEx", typeof(ImageSource), typeof(IM_ImageButton), new UIPropertyMetadata(null)); public ImageSource ImageSourceEx { get { return (ImageSource)GetValue(ImageSourceExProperty); } set { SetValue(ImageSourceExProperty, value); } } public static readonly DependencyProperty ImageSourceExProperty = DependencyProperty.Register("ImageSourceEx", typeof(ImageSource), typeof(IM_ImageButton), new UIPropertyMetadata(null)); //当前按钮显示状态被禁用或启用 protected void ImageButton_IsEnabledChanged(object sender, DependencyPropertyChangedEventArgs e) { if (this.IsEnabled && (this.ImageSourceEx != null)) { this.innerImage.Source = this.ImageSourceEx; } else if (!(this.IsEnabled || (this.GrayImageSourceEx == null))) { this.innerImage.Source = this.GrayImageSourceEx; } }