|
@@ -0,0 +1,355 @@
|
|
|
+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.Media;
|
|
|
+
|
|
|
+namespace PDF_Office.CustomControl
|
|
|
+{
|
|
|
+ public class PathRadioButton : RadioButton
|
|
|
+ {
|
|
|
+ static PathRadioButton()
|
|
|
+ {
|
|
|
+ DefaultStyleKeyProperty.OverrideMetadata(typeof(PathRadioButton), new FrameworkPropertyMetadata(typeof(PathRadioButton)));
|
|
|
+ }
|
|
|
+
|
|
|
+ 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 依赖项属性
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 鼠标移上去的背景颜色
|
|
|
+ /// </summary>
|
|
|
+ public static readonly DependencyProperty MouseOverBackgroundProperty
|
|
|
+ = DependencyProperty.Register("MouseOverBackground", typeof(Brush), typeof(PathRadioButton));
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 鼠标按下去的背景颜色
|
|
|
+ /// </summary>
|
|
|
+ public static readonly DependencyProperty MouseDownBackgroundProperty
|
|
|
+ = DependencyProperty.Register("MouseDownBackground", typeof(Brush), typeof(PathRadioButton));
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 鼠标移上去的字体颜色
|
|
|
+ /// </summary>
|
|
|
+ public static readonly DependencyProperty MouseOverForegroundProperty
|
|
|
+ = DependencyProperty.Register("MouseOverForeground", typeof(Brush), typeof(PathRadioButton), new PropertyMetadata(null, null));
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 鼠标按下去的字体颜色
|
|
|
+ /// </summary>
|
|
|
+ public static readonly DependencyProperty MouseDownForegroundProperty
|
|
|
+ = DependencyProperty.Register("MouseDownForeground", typeof(Brush), typeof(PathRadioButton), new PropertyMetadata(null, null));
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 鼠标移上去的边框颜色
|
|
|
+ /// </summary>
|
|
|
+ public static readonly DependencyProperty MouseOverBorderBrushProperty
|
|
|
+ = DependencyProperty.Register("MouseOverBorderBrush", typeof(Brush), typeof(PathRadioButton), new PropertyMetadata(null, null));
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 鼠标按下去的边框颜色
|
|
|
+ /// </summary>
|
|
|
+ public static readonly DependencyProperty MouseDownBorderBrushProperty
|
|
|
+ = DependencyProperty.Register("MouseDownBorderBrush", typeof(Brush), typeof(PathRadioButton), new PropertyMetadata(null, null));
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 圆角
|
|
|
+ /// </summary>
|
|
|
+ public static readonly DependencyProperty CornerRadiusProperty
|
|
|
+ = DependencyProperty.Register("CornerRadius", typeof(CornerRadius), typeof(PathRadioButton), null);
|
|
|
+
|
|
|
+ //图标
|
|
|
+ public static readonly DependencyProperty IconProperty
|
|
|
+ = DependencyProperty.Register("Icon", typeof(Geometry), typeof(PathRadioButton), null);
|
|
|
+
|
|
|
+ //图标填充色
|
|
|
+ public static readonly DependencyProperty IconFillProperty
|
|
|
+ = DependencyProperty.Register("IconFill", typeof(Brush), typeof(PathRadioButton), null);
|
|
|
+
|
|
|
+ //图标透明度
|
|
|
+ public static readonly DependencyProperty IconOpacityProperty
|
|
|
+ = DependencyProperty.Register("IconOpacity", typeof(double), typeof(PathRadioButton), null);
|
|
|
+
|
|
|
+ //选中的图标
|
|
|
+ public static readonly DependencyProperty IconCheckedProperty
|
|
|
+ = DependencyProperty.Register("IconChecked", typeof(Geometry), typeof(PathRadioButton), null);
|
|
|
+
|
|
|
+ //选中的图标填充色
|
|
|
+ public static readonly DependencyProperty IconCheckedFillProperty
|
|
|
+ = DependencyProperty.Register("IconCheckedFill", typeof(Brush), typeof(PathRadioButton), null);
|
|
|
+
|
|
|
+ //选中的图标的透明度
|
|
|
+ public static readonly DependencyProperty IconCheckedOpacityProperty
|
|
|
+ = DependencyProperty.Register("IconCheckedOpacity", typeof(double), typeof(PathRadioButton), null);
|
|
|
+
|
|
|
+ //鼠标移上去的图标
|
|
|
+ public static readonly DependencyProperty IconMouseOverProperty
|
|
|
+ = DependencyProperty.Register("IconMouseOver", typeof(Geometry), typeof(PathRadioButton), null);
|
|
|
+
|
|
|
+ //鼠标移上去的图标填充色
|
|
|
+ public static readonly DependencyProperty IconMouseOverFillProperty
|
|
|
+ = DependencyProperty.Register("IconMouseOverFill", typeof(Brush), typeof(PathRadioButton), null);
|
|
|
+
|
|
|
+ //鼠标移上去的透明度
|
|
|
+ public static readonly DependencyProperty IconMouseOverOpacityProperty
|
|
|
+ = DependencyProperty.Register("IconMouseOverOpacity", typeof(double), typeof(PathRadioButton), null);
|
|
|
+
|
|
|
+ //鼠标按下去的图标
|
|
|
+ public static readonly DependencyProperty IconPressProperty
|
|
|
+ = DependencyProperty.Register("IconPress", typeof(Geometry), typeof(PathRadioButton), null);
|
|
|
+
|
|
|
+ //鼠标按下去的图标填充色
|
|
|
+ public static readonly DependencyProperty IconPressFillProperty
|
|
|
+ = DependencyProperty.Register("IconPressFill", typeof(Brush), typeof(PathRadioButton), null);
|
|
|
+
|
|
|
+ //鼠标按下去的透明度
|
|
|
+ public static readonly DependencyProperty IconPressOpacityProperty
|
|
|
+ = DependencyProperty.Register("IconPressOpacity", typeof(double), typeof(PathRadioButton), null);
|
|
|
+
|
|
|
+ //图标高度
|
|
|
+ public static readonly DependencyProperty IconHeightProperty
|
|
|
+ = DependencyProperty.Register("IconHeight", typeof(double), typeof(PathRadioButton), new PropertyMetadata(24.0, null));
|
|
|
+
|
|
|
+ //图标宽度
|
|
|
+ public static readonly DependencyProperty IconWidthProperty
|
|
|
+ = DependencyProperty.Register("IconWidth", typeof(double), typeof(PathRadioButton), new PropertyMetadata(24.0, null));
|
|
|
+
|
|
|
+ //图标和内容的对齐方式
|
|
|
+ public static readonly DependencyProperty IconContentOrientationProperty
|
|
|
+ = DependencyProperty.Register("IconContentOrientation", typeof(Orientation), typeof(PathRadioButton), new PropertyMetadata(Orientation.Horizontal, null));
|
|
|
+
|
|
|
+ //图标和内容的距离
|
|
|
+ public static readonly DependencyProperty IconContentMarginProperty
|
|
|
+ = DependencyProperty.Register("IconContentMargin", typeof(Thickness), typeof(PathRadioButton), 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 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
|
|
|
+ }
|
|
|
+}
|