using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Navigation; using System.Windows.Shapes; namespace PDF_Office.CustomControl { public class PathButton : Button { static PathButton() { DefaultStyleKeyProperty.OverrideMetadata(typeof(PathButton), new FrameworkPropertyMetadata(typeof(PathButton))); } public override void OnApplyTemplate() { base.OnApplyTemplate(); if (this.MouseOverBackground == null) { this.MouseOverBackground = Background; } if (this.MouseDownBackground == null) { if (this.MouseOverBackground == null) { this.MouseDownBackground = Background; } else { this.MouseDownBackground = MouseOverBackground; } } if (this.MouseOverBorderBrush == null) { this.MouseOverBorderBrush = BorderBrush; } if (this.MouseDownBorderBrush == null) { if (this.MouseOverBorderBrush == null) { this.MouseDownBorderBrush = BorderBrush; } else { this.MouseDownBorderBrush = MouseOverBorderBrush; } } if (this.MouseOverForeground == null) { this.MouseOverForeground = Foreground; } if (this.MouseDownForeground == null) { if (this.MouseOverForeground == null) { this.MouseDownForeground = Foreground; } else { this.MouseDownForeground = this.MouseOverForeground; } } if (this.IconChecked == null) { if (this.IconPress == null) { this.IconChecked = Icon; } else { this.IconChecked = this.IconPress; } } if (this.IconCheckedFill == null) { if (this.IconPressFill == null) { this.IconCheckedFill = IconFill; } else { this.IconCheckedFill = this.IconPressFill; } } } #region 依赖项属性 /// /// 鼠标移上去的背景颜色 /// public static readonly DependencyProperty MouseOverBackgroundProperty = DependencyProperty.Register("MouseOverBackground", typeof(Brush), typeof(PathButton)); /// /// 鼠标按下去的背景颜色 /// public static readonly DependencyProperty MouseDownBackgroundProperty = DependencyProperty.Register("MouseDownBackground", typeof(Brush), typeof(PathButton)); /// /// 鼠标移上去的字体颜色 /// public static readonly DependencyProperty MouseOverForegroundProperty = DependencyProperty.Register("MouseOverForeground", typeof(Brush), typeof(PathButton), new PropertyMetadata(null, null)); /// /// 鼠标按下去的字体颜色 /// public static readonly DependencyProperty MouseDownForegroundProperty = DependencyProperty.Register("MouseDownForeground", typeof(Brush), typeof(PathButton), new PropertyMetadata(null, null)); /// /// 鼠标移上去的边框颜色 /// public static readonly DependencyProperty MouseOverBorderBrushProperty = DependencyProperty.Register("MouseOverBorderBrush", typeof(Brush), typeof(PathButton), new PropertyMetadata(null, null)); /// /// 鼠标按下去的边框颜色 /// public static readonly DependencyProperty MouseDownBorderBrushProperty = DependencyProperty.Register("MouseDownBorderBrush", typeof(Brush), typeof(PathButton), new PropertyMetadata(null, null)); /// /// 圆角 /// public static readonly DependencyProperty CornerRadiusProperty = DependencyProperty.Register("CornerRadius", typeof(CornerRadius), typeof(PathButton), null); //图标 public static readonly DependencyProperty IconProperty = DependencyProperty.Register("Icon", typeof(Geometry), typeof(PathButton), null); //图标填充色 public static readonly DependencyProperty IconFillProperty = DependencyProperty.Register("IconFill", typeof(Brush), typeof(PathButton), null); //图标透明度 public static readonly DependencyProperty IconOpacityProperty = DependencyProperty.Register("IconOpacity", typeof(double), typeof(PathButton), null); //按钮是否被选中 public static readonly DependencyProperty IsCheckedProperty = DependencyProperty.Register("IsChecked", typeof(bool), typeof(PathButton), null); //选中的图标 public static readonly DependencyProperty IconCheckedProperty = DependencyProperty.Register("IconChecked", typeof(Geometry), typeof(PathButton), null); //选中的图标填充色 public static readonly DependencyProperty IconCheckedFillProperty = DependencyProperty.Register("IconCheckedFill", typeof(Brush), typeof(PathButton), null); //选中的图标的透明度 public static readonly DependencyProperty IconCheckedOpacityProperty = DependencyProperty.Register("IconCheckedOpacity", typeof(double), typeof(PathButton), null); //鼠标移上去的图标 public static readonly DependencyProperty IconMouseOverProperty = DependencyProperty.Register("IconMouseOver", typeof(Geometry), typeof(PathButton), null); //鼠标移上去的图标填充色 public static readonly DependencyProperty IconMouseOverFillProperty = DependencyProperty.Register("IconMouseOverFill", typeof(Brush), typeof(PathButton), null); //鼠标移上去的透明度 public static readonly DependencyProperty IconMouseOverOpacityProperty = DependencyProperty.Register("IconMouseOverOpacity", typeof(double), typeof(PathButton), null); //鼠标按下去的图标 public static readonly DependencyProperty IconPressProperty = DependencyProperty.Register("IconPress", typeof(Geometry), typeof(PathButton), null); //鼠标按下去的图标填充色 public static readonly DependencyProperty IconPressFillProperty = DependencyProperty.Register("IconPressFill", typeof(Brush), typeof(PathButton), null); //鼠标按下去的透明度 public static readonly DependencyProperty IconPressOpacityProperty = DependencyProperty.Register("IconPressOpacity", typeof(double), typeof(PathButton), null); //图标高度 public static readonly DependencyProperty IconHeightProperty = DependencyProperty.Register("IconHeight", typeof(double), typeof(PathButton), new PropertyMetadata(24.0, null)); //图标宽度 public static readonly DependencyProperty IconWidthProperty = DependencyProperty.Register("IconWidth", typeof(double), typeof(PathButton), new PropertyMetadata(24.0, null)); //图标和内容的对齐方式 public static readonly DependencyProperty IconContentOrientationProperty = DependencyProperty.Register("IconContentOrientation", typeof(Orientation), typeof(PathButton), new PropertyMetadata(Orientation.Horizontal, null)); //图标和内容的距离 public static readonly DependencyProperty IconContentMarginProperty = DependencyProperty.Register("IconContentMargin", typeof(Thickness), typeof(PathButton), new PropertyMetadata(new Thickness(0, 0, 0, 0), null)); #endregion #region 属性包装 public Brush MouseOverBackground { get { return (Brush)GetValue(MouseOverBackgroundProperty); } set { SetValue(MouseOverBackgroundProperty, value); } } public Brush MouseDownBackground { get { return (Brush)GetValue(MouseDownBackgroundProperty); } set { SetValue(MouseDownBackgroundProperty, value); } } public Brush MouseOverForeground { get { return (Brush)GetValue(MouseOverForegroundProperty); } set { SetValue(MouseOverForegroundProperty, value); } } public Brush MouseDownForeground { get { return (Brush)GetValue(MouseDownForegroundProperty); } set { SetValue(MouseDownForegroundProperty, value); } } public Brush MouseOverBorderBrush { get { return (Brush)GetValue(MouseOverBorderBrushProperty); } set { SetValue(MouseOverBorderBrushProperty, value); } } public Brush MouseDownBorderBrush { get { return (Brush)GetValue(MouseDownBorderBrushProperty); } set { SetValue(MouseDownBorderBrushProperty, value); } } public CornerRadius CornerRadius { get { return (CornerRadius)GetValue(CornerRadiusProperty); } set { SetValue(CornerRadiusProperty, value); } } public Geometry Icon { get { return (Geometry)GetValue(IconProperty); } set { SetValue(IconProperty, value); } } public Brush IconFill { get { return (Brush)GetValue(IconFillProperty); } set { SetValue(IconFillProperty, value); } } public double IconOpacity { get { return (double)GetValue(IconOpacityProperty); } set { SetValue(IconOpacityProperty, value); } } public bool IsChecked { get { return (bool)GetValue(IsCheckedProperty); } set { SetValue(IsCheckedProperty, value); } } public Geometry IconChecked { get { return (Geometry)GetValue(IconCheckedProperty); } set { SetValue(IconCheckedProperty, value); } } public Brush IconCheckedFill { get { return (Brush)GetValue(IconCheckedFillProperty); } set { SetValue(IconCheckedFillProperty, value); } } public double IconCheckedOpacity { get { return (double)GetValue(IconCheckedOpacityProperty); } set { SetValue(IconCheckedOpacityProperty, value); } } public Geometry IconMouseOver { get { return (Geometry)GetValue(IconMouseOverProperty); } set { SetValue(IconMouseOverProperty, value); } } public Brush IconMouseOverFill { get { return (Brush)GetValue(IconMouseOverProperty); } set { SetValue(IconMouseOverProperty, value); } } public double IconMouseOverOpacity { get { return (double)GetValue(IconMouseOverProperty); } set { SetValue(IconMouseOverProperty, value); } } public Geometry IconPress { get { return (Geometry)GetValue(IconPressProperty); } set { SetValue(IconPressProperty, value); } } public Brush IconPressFill { get { return (Brush)GetValue(IconPressFillProperty); } set { SetValue(IconPressFillProperty, value); } } public double IconPressOpacity { get { return (double)GetValue(IconPressOpacityProperty); } set { SetValue(IconPressOpacityProperty, value); } } public double IconHeight { get { return (double)GetValue(IconHeightProperty); } set { SetValue(IconHeightProperty, value); } } public double IconWidth { get { return (double)GetValue(IconWidthProperty); } set { SetValue(IconWidthProperty, value); } } public Orientation IconContentOrientation { get { return (Orientation)GetValue(IconContentOrientationProperty); } set { SetValue(IconContentOrientationProperty, value); } } public Thickness IconContentMargin { get { return (Thickness)GetValue(IconContentMarginProperty); } set { SetValue(IconContentMarginProperty, value); } } #endregion } }