PercentRing2.xaml.cs 4.08 KB
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Globalization;
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 FLY.ControlLibrary
{
    /// <summary>
    /// PercentRing.xaml 的交互逻辑
    /// </summary>
    public partial class PercentRing2 : UserControl, INotifyPropertyChanged
    {
        #region 附加属性
        /// <summary>
        /// 比例
        /// </summary>
        public static readonly DependencyProperty RatioProperty =
            DependencyProperty.Register("Ratio", typeof(double), typeof(PercentRing2), new PropertyMetadata(0.3,
                new PropertyChangedCallback(delegate (DependencyObject d, DependencyPropertyChangedEventArgs e)
            {

            })));
        /// <summary>
        /// 比例
        /// </summary>
        public double Ratio { 
            get
            {
                return (double)GetValue(RatioProperty);
            }
            set
            {
                SetValue(RatioProperty, value);
                NotifyPropertyChanged("Ratio");
            }
        }

        /// <summary>
        /// 总量
        /// </summary>
        public static readonly DependencyProperty TotalProperty =
            DependencyProperty.Register("Total", typeof(double), typeof(PercentRing2), new PropertyMetadata(1.0));
        /// <summary>
        /// 总量
        /// </summary>
        public double Total
        {
            get
            {
                return (double)GetValue(RatioProperty);
            }
            set
            {
                if (value != Total)
                {
                    SetValue(RatioProperty, value);
                    NotifyPropertyChanged("Total");
                }
            }
        }

        /// <summary>
        /// 颜色
        /// </summary>
        public static readonly DependencyProperty ColorTextProperty =
            DependencyProperty.Register("ColorText", typeof(Brush), typeof(PercentRing2), new PropertyMetadata(new SolidColorBrush(Color.FromRgb(0x46,0x46,0x46))));

        /// <summary>
        /// 颜色
        /// </summary>
        public Brush ColorText
        {
            get
            {
                return (Brush)GetValue(ColorTextProperty);
            }
            set
            {
                if (value != ColorText)
                {
                    SetValue(ColorTextProperty, value);
                    NotifyPropertyChanged("ColorText");
                }
            }
        }
        
        /// <summary>
        /// 
        /// </summary>
        public static readonly DependencyProperty ColorUnitProperty =
            DependencyProperty.Register("ColorUnit", typeof(Brush), typeof(PercentRing2), new PropertyMetadata(new SolidColorBrush(Color.FromRgb(0x46, 0x46, 0x46))));
        
        /// <summary>
        /// 
        /// </summary>
        public Brush ColorUnit
        {
            get
            {
                return (Brush)GetValue(ColorUnitProperty);
            }
            set
            {
                if (value != ColorUnit)
                {
                    SetValue(ColorUnitProperty, value);
                    NotifyPropertyChanged("ColorUnit");
                }
            }
        }


        #endregion
        public PercentRing2()
        {
            InitializeComponent();
            //this.DataContext = this;
            Draw();
        }
        void Draw()
        {
            arc_value.DataContext = this;
        }
        #region INotifyPropertyChanged 成员
        public void NotifyPropertyChanged(string propertyName)
        {
            if (PropertyChanged != null)
                PropertyChanged.Invoke(this, new PropertyChangedEventArgs(propertyName));
        }
        public event PropertyChangedEventHandler PropertyChanged;

        #endregion
    }
}